我知道我们可以使用__getattribute__
捕获任何属性。但是我需要捕获所有对应的属性,并且仍然不离开__getattribute__
的范围。属性可以采用字符串列表的形式。
例如:
假设my_object
是my_class
的对象。然后用户调用my_object.attr_a.attr_b
,然后我想获得一个列表['attr_a', 'attr_b']
,并控制执行上述行后不中断地进行操作。
此外,如果我也能同时获得*args
和**kwargs
,那就太好了。
我尝试了以下实现__getattribute__
的{{1}}方法的方法:
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__
的范围内。
任何帮助将非常感激。也欢迎使用其他类型的方法。