gpt4 book ai didi

Python super : calling a base class method which contains another base class method that is overriden by derived class

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:41 26 4
gpt4 key购买 nike

class A(object):
def foo(self):
print "A - foo"
def foo2(self):
print "foo2"
self.foo()

class B(A):
def foo(self):
print "B - foo"
def foo2(self):
super(B, self).foo2()

B().foo2()

我试图获取 [senario1]:

foo2
A - foo

但是得到了[senario2]:

foo2
B - foo

相反。

我找到了 the explanation ,但我想知道是否有一种方法可以在不更改 A 类中方法 foo 名称的情况下生成 [senario1]?

最佳答案

一种方法是在 A 上调用 foo 并手动将 self 传递给它:

class A(object):
def foo(self):
print("A - foo")
def foo2(self):
print("foo2")
A.foo(self)

class B(A):
def foo(self):
print("B - foo")
def foo2(self):
super(B, self).foo2()

B().foo2()

这样您将始终在A 上调用foo。如果这个 foo 会调用 self.foo(),如果会再次调用 B 的 foo 方法。

关于Python super : calling a base class method which contains another base class method that is overriden by derived class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672395/

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