我本以为超级()总是尝试在基类中使用方法(或属性)运行,直到我遇到一个用super().__getattribute__("foo")获取子类属性的用例。简化的代码如下所示。__getattribute__("value")) super().__getattribute__('foo')()
d.bar()Derived bar derivedderi
有可能有一个方法并将其作为函数或属性调用吗?__;如果它是一个描述符,则将从__getattribute__中调用__get__,这意味着bar()在返回给调用者之前就已经计算过了。如果一个属性是一个函数,它只返回一个函数,然后将()应用于该函数
def __getattribute__():
if len(args)>1: return fu
我想覆盖我的Python类的__getattribute__和__setattr__方法。我的用例是一个常见的用例:我有几个想要处理的特殊名称,并且我想要任何其他名称的默认行为。对于__getattribute__,似乎只需引发AttributeError就可以请求默认行为。但是,如何在__setattr__中实现相同的功能呢?class ABCImmutable(SomeSuperclass): if name