它显示 Name Error name MEETING_TIMES is not defined

it displays Name Error name MEETING_TIMES is not defined

我已经定义了一个 MEETING_TIMES 的二维数组,但是它向我显示了 NameError 也显示了错误 关于 class Data

的数据对象
class Data:
    MEETING_TIMES = [
        ["MT1", "MWF 09:30 - 12:00"],
        ["MT2", "MWF 01:30 - 04:00"],
        ["MT3", "TTH 09:30 - 12:00"],
        ["MT4", "TTH 01:30 - 04:00"]
    ]

    def __init__(self): 
        self._meetingTimes = []
        for i in range(0, len(MEETING_TIMES)):
            self._meetingTimes.append(MeetingTime(self.MEETING_TIMES[i][0],
            self.MEETING_TIMES[i][1]))
            # Parameters = id and meeting time

data = Data()

我相信您混淆了 class 变量和实例变量。按照您定义 MEETING_TIMES 的方式,它是一个 class 变量。它是整个 class 数据的 属性,而不仅仅是它的任何特定实例。因此,要引用它,您可以使用 Data.MEETING_TIME,因为它是实际 class.

的 属性

您可能想尝试更多的代码:

class Data:
    MEETING_TIMES = [
    ["MT1", "MWF 09:30 - 12:00"],
    ["MT2", "MWF 01:30 - 04:00"],
    ["MT3", "TTH 09:30 - 12:00"],
    ["MT4", "TTH 01:30 - 04:00"]
    ]
    def __init__(self): 
        self._meetingTimes = []
        for i in range(0, len(Data.MEETING_TIMES)):
            self._meetingTimes.append(????(Data.MEETING_TIMES[i][0],
            Data.MEETING_TIMES[i][1]))
            # Parameters = id and meeting time
data = Data()

恐怕我用 ??? 代替了 MeetingTime,因为我不确定该拼写指的是什么方法。

有时您会正确使用 self.MEETING_TIMES,有时您会错误地使用 MEETING_TIMES。那么,有什么区别呢?执行方法时,变量可以是方法的局部变量,也可以是定义在 "super global" 内置命名空间中的模块的全局变量。在第一种情况下,self 在本地命名空间中(到目前为止一切正常)但 MEETING_TIMES 不在。实例对象还有一条规则:如果变量不在实例数据中,python 会查看 class 命名空间。 Python 看到 self,但没有看到 self.MEETING_TIMES,因此返回到定义变量的 self.__class__.MEETING_TIMES