Consultez le code suivant:Appeler un classmethod de la classe de base en Python
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 dois-je 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 normal, mais apparemment je n'arrive pas à trouver un moyen d'appeler le classmethod dans la classe de base.
Dans l'exemple ci-dessus, Base.do(a)
imprime la classe Base
au lieu de la classe Derived
.
connexes: [Comment appeler la méthode d'une classe parente de la classe des enfants en python?] (Http://stackoverflow.com/q/805066/95735) –