отображает имя Ошибка имя MEETING_TIMES не определено - PullRequest
0 голосов
/ 14 апреля 2020

я определил двумерный массив MEETING_TIMES, но он показывает мне 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()

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Иногда вы правильно используете self.MEETING_TIMES, а другие неправильно MEETING_TIMES. Так в чем же разница? При выполнении метода переменная может быть локальной для метода, глобальной для модуля, определенного в или в «суперглобальном» встроенном пространстве имен. В первом случае self находится в локальном пространстве имен (пока все хорошо), а MEETING_TIMES - нет. Существует еще одно правило для объектов экземпляра: если переменная отсутствует в данных экземпляра, python просматривает пространство имен класса. Python видит self, но не видит self.MEETING_TIMES, поэтому возвращается к self.__class__.MEETING_TIMES, где определяется переменная.

0 голосов
/ 14 апреля 2020

Я полагаю, вы путаете переменные класса и переменные экземпляра. То, как вы определили 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, поскольку я не был уверен, к какому методу относится это правописание.

...