如何使用__getattribute__或类似方法捕获多个属性及其参数?

时间:2019-05-31 16:50:14

标签: python attributes

我知道我们可以使用__getattribute__捕获任何属性。但是我需要捕获所有对应的属性,并且仍然不离开__getattribute__的范围。属性可以采用字符串列表的形式。

例如:

假设my_objectmy_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__的范围内。
任何帮助将非常感激。也欢迎使用其他类型的方法。

0 个答案:

没有答案