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