Как получить значение property в дочернем классе? Допустим, есть некий класс со следующим проперти:@property
@functools.lru_cache(maxsize=64)
def permission(self) -> int:
return 1
мы наследуем этот класс, и было бы неплохо, получить значение permission у родителя. Как это сделать? Что-то такое @property
@functools.lru_cache(maxsize=64)
def permission(self) -> int:
return Base.__init__(self, self.bot).permission + 1
Не подойдёт из-за, скорей всего, перезаписи некоторых свойств класса, которое происходит при инициализации.

21 Авг 2019 в 06:58
294 +1
2
Ответы
1

Для доступа к значению property в родительском классе из дочернего класса, вы можете использовать встроенную функцию super(). В вашем случае код может выглядеть примерно так:

class Base:
@property
@functools.lru_cache(maxsize=64)
def permission(self) -> int:
return 1
class Child(Base):
@property
def permission(self) -> int:
return super().permission + 1
child_instance = Child()
print(child_instance.permission) # Выведет 2

В этом случае, при вызове child_instance.permission, метод permission дочернего класса будет вызываться, но благодаря использованию super().permission, он сможет получить доступ к реализации метода permission из родительского класса и добавить к нему 1.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир