它显示 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
。
我已经定义了一个 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
。