Rozważ następujący kod:
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
Od Derived.do, jak mam zadzwonić Base.do?
Normalnie użyłbym superlub nawet bezpośrednio nazwy klasy bazowej, jeśli jest to normalna metoda obiektu, ale najwyraźniej nie mogę znaleźć sposobu na wywołanie metody class w klasie bazowej.
W powyższym przykładzie, Base.do(a)drukuje Baseklasy zamiast Derivedklasy.