Python类练习疑问:Location类创建逻辑与类变量报错问题
编程练习代码修正与问题解析
核心问题解析与修正
1. 第二步要求的实现修正
题目明确要求创建Location实例时,传入坐标参数并在内部生成Coordinate实例,但你当前的代码是直接接收一个已创建好的Coordinate对象,不符合要求。
修正:将Location的构造方法参数改为纬度、经度和地点名称,在方法内部实例化Coordinate并赋值给self.coordinate。
2. 类变量locations的访问错误
你碰到的NameError是因为在实例方法中直接使用locations,Python无法识别这个变量。类变量需要通过类名(Location.locations)或者实例的__class__属性(self.__class__.locations)访问。另外,初始化类变量时不要用[0],应该用空列表[],因为我们要存储的是Location实例,不需要初始占位值。
3. return_location方法参数缺失
实例方法必须以self作为第一个参数,否则无法访问实例的属性(比如self.name)。
修正后的完整代码
class Coordinate: def __init__(self, latitude, longitude): self.latitude = latitude self.longitude = longitude def return_coord(self): return self.latitude, self.longitude class Location: # 初始化空列表作为类变量,存储所有Location实例 locations = [] def __init__(self, latitude, longitude, name): # 内部创建Coordinate实例,满足题目第二步要求 self.coordinate = Coordinate(latitude, longitude) self.name = name # 将当前实例添加到类变量列表中 Location.locations.append(self) def return_location(self): # 带self参数,正确返回地点名称 return self.name
内容的提问来源于stack exchange,提问作者CJH
相关产品推荐
相关产品推荐

