gpt4 book ai didi

python - 在 Python 中调用基类的类方法

转载 作者:IT老高 更新时间:2023-10-28 21:09:32 25 4
gpt4 key购买 nike

考虑以下代码:

class Base(object):

@classmethod
def do(cls, a):
print cls, a

class Derived(Base):

@classmethod
def do(cls, a):
print 'In derived!'
# Base.do(cls, a) -- can't pass `cls`
Base.do(a)

if __name__ == '__main__':
d = Derived()
d.do('hello')

> $ python play.py
> In derived!
> <class '__main__.Base'> msg

Derived.do,如何调用Base.do

如果这是一个普通的对象方法,我通常会直接使用 super 甚至基类名称,但显然我找不到在基类中调用类方法的方法。

在上面的例子中,Base.do(a) 打印 Base 类而不是 Derived 类。

最佳答案

如果您使用的是新样式类(即从 Python 2 中的 object 派生,或者始终在 Python 3 中),您可以使用 super() 像这样:

super(Derived, cls).do(a)

这就是在设置了 cls 的情况下从派生类调用基类方法版本(即 print cls, a)中的代码的方式到派生类。

关于python - 在 Python 中调用基类的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1269217/

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