Почему я не могу получить доступ к закрытым переменным суперкласса в Python?

Я знаю, что должениспользовать методы доступа. Я вижу в модуле datetime , что класс datetime наследуется от даты.

class datetime(date):
    <some other code here....>
    self = date.__new__(cls, year, month, day)
    self._hour = hour
    self._minute = minute
    self._second = second
    self._microsecond = microsecond
    self._tzinfo = tzinfo
    return self

Я также вижу, что datetime может получить доступ к членам date, как в __repr__:

def __repr__(self):
    """Convert to formal string, for repr()."""
    L = [self._year, self._month, self._day, # These are never zero
         self._hour, self._minute, self._second, self._microsecond]

Я попытался создать подкласс datetime, чтобы добавить к нему некоторую информацию, а затем написать аналогичный __repr__ function:

def __repr__(self):
    """Convert to formal string, for repr()."""
    L = [self._year, self._month, self._day, # These are never zero
         self._hour, self._minute, self._second, self._microsecond,
         self._latitude, self._longitude]

Отладчик пожаловался, что self._year не существует. (Однако self.yearработает.)

Я знаю, что должениспользовать функцию доступа. Я просто хочу понять, почему datetime может получить доступ к закрытым переменным date , но мой подкласс не может.

5
задан mata 20 May 2012 в 18:45
поделиться