Я недавно слышал о свойствах, и о том, что вы можете назначать функции получателю или установщику атрибута в классе. Таким образом, вы можете делать проверки значения или другие вещи.
Я хочу спросить, возможно ли назначить одну и ту же функцию получателю нескольких атрибутов. Для этого функции требуется динамический возврат, так что значение X возвращается, если X был вызван, и Y, если Y вызывался.
Я мог бы создать собственный метод получения для каждого Атрибута, но в моем случае это более 20 атрибутов, которые должны вызывать эту функцию, поэтому было бы лучше иметь динамический вызов.
Тестирование с __getattributes__
было полной катастрофой, потому что я всегда делал это бесконечно, так что либо это было невозможно, либо я просто ошибался.
Это возможно? Примерно так:
class example():
def __init__(self):
self.__x = 1
self.__y = 2
def do_something(self):
#Do something which is needed by multiple attributes
#without changes
attribute_name = '__' + attribute_name
return self.__dict__[attribute_name]
x = property(fget=do_something)
y = property(fget=do_something)
...
РЕДАКТИРОВАТЬ 1:
Мой полный код, где мне может понадобиться динамическое свойство Getter.
https://repl.it/@TobiasWagner/TV-DB-Django