Как поймать несколько атрибутов и их аргументов, используя __getattribute__ или похожий метод? - PullRequest
0 голосов
/ 31 мая 2019

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

Например:

Предположим, my_object является объектом my_class.И пользователь звонит my_object.attr_a.attr_b, затем я хочу получить список ['attr_a', 'attr_b'] и контролировать выполнение чего-либо после выполнения вышеуказанной строки без каких-либо перерывов.

Кроме того, было бы здорово, если бы я мог также получить *args и **kwargs.

Я пробовал следующие способы реализации __getattribute__ метода my_class:

attr_list =[]
def __getattribute__(self, attr):
    global attr_list
    attr_list.append(attr)
    exec(attr + " = my_class()")
    return eval(temp)

Хотя это прекрасно работает, требуется, чтобы я вернулся изобъем от my_object.__getattribute__ до attr_a.__getattribute__ до attr_b.__getattribute__ и затем __main__.Что я хочу, так это оставаться в поле зрения my_object.__getattribute__.
Любая помощь будет очень признательна.Подход другого типа также приветствуется.

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