Si consideri il seguente codice:Chiamata classmethod di una classe base in 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
Da Derived.do
, come mi chiamo Base.do
?
Normalmente userei super
o anche il nome della classe base direttamente se questo è un normale metodo di oggetto, ma a quanto pare non riesco a trovare un modo per chiamare il metodo di classe nella classe base.
Nell'esempio precedente, Base.do(a)
stampa classe Base
anziché Derived
.
correlati: [Come chiamare il metodo di una classe genitore dalla classe bambino in Python?] (Http://stackoverflow.com/q/805066/95735) –