gpt4 book ai didi

python - 调用重写的方法,父类(super class)调用重写的方法

转载 作者:太空狗 更新时间:2023-10-29 17:06:09 25 4
gpt4 key购买 nike

此代码抛出异常,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()

最佳答案

在类 A 中,您需要调用 A 方法并手动传入 self,而不是调用 self 方法。

这不是正常的做事方式——您应该有一个真正这样做的充分理由。

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

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()

关于python - 调用重写的方法,父类(super class)调用重写的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7859609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com