Как сделать геттер и сеттер для класса-наследника?
Как сделать геттер и сеттер в классе Name чтобы я мог менять __value класса Name? Например когда пытаюсь дать значение:
n = Name()
n.value = 'Ivan'
print(n.value)
получаю ошибку:
AttributeError: 'super' object has no attribute '_Name__value'
Реализация классов:
class Field:
def __init__(self):
self.__value = None
@property
def value(self):
return self.__value
@value.setter
def value(self, value):
self.__value = value
class Name(Field):
def __init__(self):
super().__init__()
@property
def value(self):
return super().value
@value.setter
def value(self, name):
super().value = name
Ответы (2 шт):
Автор решения: PoNi
→ Ссылка
Попробуй сделать вот так
class Name(Field):
def __init__(self, value=""):
super().value = value
@property
def fvalue(self):
return super().value
@value.setter
def fvalue(self, name):
super().value = name
n = Name()
n.value = "Ivan"
print(n.value)
Автор решения: Эникейщик
→ Ссылка
Ну так у родительского класса и нет value, а есть __value. Нужно привести имена в соответствие и все будет работать.