У меня есть ситуация, когда я переопределяю только установщик свойства:
class Parent:
@property
def x(self):
return self.__dict__['x']
@x.setter
def x(self, val):
self.__dict__['x'] = f'P{val}'
class Child(Parent):
@Parent.x.setter
def x(self, val):
super().x = val
print('all set')
Здесь оператор печати представляет собой обработку, которую я хочу выполнить после вызова установщика родительского объекта. Вы можете просто проигнорировать это. super().x = y
- это моя собственная попытка вызвать указанный сеттер. Это терпит неудачу с
Attribute error: 'super' object has no attribute 'x'
Как правильно использовать установщик свойств из родительского класса в дочернем?
Я бы предпочел избежать следующего, даже если он работает нормально, поскольку включает явный вызов dunder-методов:
Parent.x.__set__(self, val)
В качестве бонуса есть ли возможность использовать super()
в теле детского сеттера?
🤔 А знаете ли вы, что...
В Python есть инструменты для создания графиков и визуализации данных, такие как библиотеки Matplotlib и Seaborn.
Вы можете использовать функцию свойства fset:
class Child(Parent):
@Parent.x.setter
def x(self, val):
Parent.x.fset(self, val)
print('all set')