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 superou 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 Baseclasse au lieu de la Derivedclasse.