Почему super (type1, type2) .var .__ устанавливает __ () для переопределения родительского свойства в подклассе Python? - PullRequest
0 голосов
/ 21 марта 2019

Я читаю кулинарную книгу по Python и у меня есть вопросы в главе 8.8.В SubPerson почему следующий код не работает в функции установки?super (). name = value или super (SubPerson, SubPerson) .name = value

Если вы посмотрите на функцию получения в SubPerson, super (). name работает.Зачем?

class Person:
def __init__(self, name):
    self.name = name

# Getter function
@property
def name(self):
    return self._name

# Setter function
@name.setter
def name(self, value):
    if not isinstance(value, str):
        raise TypeError('Expected a string')
    self._name = value

class SubPerson(Person):
@property
def name(self):
    print('Getting name')
    return super().name # Why super().name works here?

@name.setter
def name(self, value):
    print('Setting name to', value)
    super(SubPerson, SubPerson).name.__set__(self, value)
    #super().name = value ... This statement gets error
    #super(SubPerson, SubPerson).name = value   ...Get Error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...