Вызов переопределенного метода, суперкласс an вызывает переопределенный метод

Этот код выбрасывает исключение, AttributeError, "wtf!", потому что A.foo() вызывает B.foo1(), а не должен вызывать A.foo1()? Как заставить его вызывать A.foo1() (и любой вызов метода внутри A.foo() должен вызывать A. *)

class A(object):
    def foo(self):
        print self.foo1()

    def foo1(self):
        return "foo"

class B(A):
    def foo1(self):
        raise AttributeError, "wtf!"

    def foo(self):
        raise AttributeError, "wtf!"

    def foo2(self):
        super(B, self).foo()

myB = B()
myB.foo2()
15
задан Ethan Furman 10 June 2016 в 14:12
поделиться