我定义了一个MEETING_TIMES的2D数组,但它显示了NameError并显示了错误 关于数据类的数据对象
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()
答案 0 :(得分:0)
有时候您正确使用self.MEETING_TIMES
,而其他时候您错误使用MEETING_TIMES
。那么,有什么区别呢?执行方法时,变量可以在方法本地,也可以在“超级全局”内建命名空间中定义的模块全局。在第一种情况下,self
在本地名称空间中(到目前为止很好),而MEETING_TIMES
不是。实例对象还有另外一条规则:如果实例数据中没有变量,则python查找类名称空间。 Python看到self
,但看不到self.MEETING_TIMES
,因此回退到定义变量的self.__class__.MEETING_TIMES
。
答案 1 :(得分:-1)
我相信您会混淆类变量和实例变量。您定义MEETING_TIMES
的方式是一个类变量。它是整个类Data的属性,而不仅仅是它的任何特定实例。因此,要引用它,请使用Data.MEETING_TIME,因为它是实际类的属性。
您可能想尝试以下代码:
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
,因为我不确定拼写所指的是什么方法。