次のコードを検討してください。
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
これが通常のオブジェクトメソッドであれば、通常は直接、または基本クラス名を直接使用しますが、どうやら基本クラスでclassmethodを呼び出す方法が見つかりません。
上記の例では、Base.do(a)
印刷Base
の代わりにクラスをDerived
クラス。
1
関連:Pythonで子クラスから親クラスのメソッドを呼び出す方法は?
—
Piotr Dobrogost 2012年