Одинаковое GET-свойство для нескольких атрибутов - PullRequest
0 голосов
/ 16 ноября 2018

Я недавно слышал о свойствах, и о том, что вы можете назначать функции получателю или установщику атрибута в классе. Таким образом, вы можете делать проверки значения или другие вещи.

Я хочу спросить, возможно ли назначить одну и ту же функцию получателю нескольких атрибутов. Для этого функции требуется динамический возврат, так что значение 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...