【发布时间】:2010-11-19 03:30:15
【问题描述】:
考虑以下代码:
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 class overriding class-method