小编Per*_*tes的帖子

调用重写方法,超类调用重写方法

此代码抛出异常,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()
Run Code Online (Sandbox Code Playgroud)

python inheritance superclass

15
推荐指数
3
解决办法
2万
查看次数

标签 统计

inheritance ×1

python ×1

superclass ×1