Я работаю с somethign, похожим на этот код:
class BaseClass(object):
def __getattr__(self, attr):
return lambda:'1'
class SubClass(BaseClass):
def foo(self):
suffix = '2'
return super(SubClass, self).foo() + suffix
class SubClass2(SubClass):
def foo(self):
suffix = '3'
return super(SubClass2, self).foo() + suffix
o = SubClass2()
print o.foo()
Я ожидаю увидеть вывод '123', но вместо этого получаю сообщение об ошибке AttributeError: 'super' object has no attribute 'foo'
. Python даже не пытается использовать базовый класс __getattr__
.
Без изменения базового класса и слияния двух супер-вызовов я не смогу получить вывод, который я хочу. Есть ли какая-нибудь совместная модель суперкалла, которая будет работать для меня здесь?
Я понимаю, что super() переопределяет getattr каким-то образом, чтобы делать то, что ему нужно сделать, но я спрашиваю, есть ли разумное обходное решение, позволяющее вызывать подкласс __getattr__
, когда необходимо.