我想重写python中几个内置类型的
__getattr__
方法。我想完成以下任务:每次访问默认类型实例的属性时,都应该调用方法test()
。
我已经尝试过(例如
list
):
list.__getattr__ = test
但是这给了我一个例外:
TypeError: cannot set '__getattr__' attribute of immutable type 'list'
有什么办法可以规避这个吗?
我建议您看一下这个视频 分钟 2:51,他解释了如何从不可变类继承以覆盖其
__new__
方法。
我认为你应该继承list
并定义一个__getattr__
函数。像往常一样,确保您要使用 __getattr__
而不是 __getattribute__
。