在 Python 中覆盖列表(和其他内置类型)上的“__getattr__”

问题描述 投票:0回答:1

我想重写python中几个内置类型的

__getattr__
方法。我想完成以下任务:每次访问默认类型实例的属性时,都应该调用方法
test()

我已经尝试过(例如

list
):

list.__getattr__ = test

但是这给了我一个例外:

TypeError: cannot set '__getattr__' attribute of immutable type 'list'

有什么办法可以规避这个吗?

python metaprogramming
1个回答
0
投票

我建议您看一下这个视频 分钟 2:51,他解释了如何从不可变类继承以覆盖其

__new__
方法。 我认为你应该继承
list
并定义一个
__getattr__
函数。像往常一样,确保您要使用
__getattr__
而不是
__getattribute__

© www.soinside.com 2019 - 2024. All rights reserved.