在Python中调用基类的classmethod

考虑以下代码:

类基(对象):
@类方法
def do(cls,a):
打印cls,a
派生类(基):
@类方法
def do(cls,a):
打印“在导出中!”
#Base.do(cls,a)--无法通过'cls`
Base.do(a)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
d=派生的()
d、 你(‘你好’)
>$python play.py
&燃气轮机;在衍生中!
&燃气轮机&书信电报;类“\uuu main\uuuu.Base”>味精

Derived.do,如何调用Base.do

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

在上面的示例中,Base.do(a)打印Baseclass,而不是Derivedclass

如果您正在使用一个新样式的类(即从Python 2中的object派生,或者总是在Python 3中派生),您可以使用super()这样做:

super(派生,cls).do(a)

这是从派生类调用基类版本的方法(即print cls,a)中的代码的方式,其中cls被设置为派生类

发表评论