Considérez le code suivant:
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
De Derived.do
, comment appeler Base.do
?
J'utiliserais normalement super
ou même le nom de la classe de base directement s'il s'agit d'une méthode d'objet normale, mais apparemment, je ne peux pas trouver un moyen d'appeler la méthode de classe dans la classe de base.
Dans l'exemple ci-dessus, Base.do(a)
imprime la Base
classe au lieu de la Derived
classe.