如何跳过自定义__getattribute__方法?

时间:2019-02-09 21:11:48

标签: python

为了更好地理解这个问题,下面是一个示例:

class Parent:
    def __getattribute__(self, attr):
        print('ha!')
        return super().__getattribute__(attr)


class Bar(Parent):
    my_attr = 'hi'

test = Bar()

print("----------")
print(test.my_attr)

在此示例中,Bar对象具有不可更改的Parent超类。

总是在我读取Bar类型的对象的属性时,此属性首先通过超类__getattribute__的{​​{1}}。

该代码的打印结果为:

Parent

但是如何不经过---------- ha! hi 的{​​{1}}来读取test的原始值?

1 个答案:

答案 0 :(得分:3)

您可以致电object.__getattribute__(test, 'my_attr')super(Parent, test).__getattribute__('my_attr')

未经测试。但是我已经在转置对象演示中使用了它。要访问对象的属性,这些对象将替代对集合调用的所有访问。