【问题标题】:it displays Name Error name MEETING_TIMES is not defined它显示名称错误名称 MEETING_TIMES 未定义
【发布时间】:2020-04-14 02:09:44
【问题描述】:

我已经定义了一个 MEETING_TIMES 的 2D 数组,但它显示 NameError 也显示错误 关于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()

【问题讨论】:

    标签: python oop object methods nameerror


    【解决方案1】:

    有时你正确地使用了self.MEETING_TIMES,而其他时候你错误地使用了MEETING_TIMES。那么,有什么区别呢?执行方法时,变量可以是方法的本地变量,也可以是其在“超级全局”内置命名空间中定义的模块的全局变量。在第一种情况下,self 位于本地命名空间中(到目前为止还不错),但 MEETING_TIMES 不在。实例对象还有一条规则:如果变量不在实例数据中,python 会查看类名称空间。 Python 看到self,但没有看到self.MEETING_TIMES,所以退回到定义变量的self.__class__.MEETING_TIMES

    【讨论】:

      【解决方案2】:

      我相信您混淆了类变量和实例变量。您定义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,因为我不确定那个拼写指的是什么方法。

      【讨论】:

      • 通过self.MEETING_TIMES 引用类变量是可以的——事实上,这是首选的方式,以便子类或实例可以更改它。
      • ThankYou @tdelaney 这就是您指出的错误!现在它正在工作。
      • @ZainSadaqat - 您应该将变量引用为self.MEETING_TIMES 而不是Data.MEETING_TIMES,如此处所建议的。这样做意味着子类可以修改MEETING_TIMES,而父类方法仍然可以工作。
      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 2021-04-02
      • 2015-01-28
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2019-09-09
      • 2017-12-13
      相关资源
      最近更新 更多