You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:09:36