functools.singledispatch
hilft beim Definieren einer generischen Methode mit einem einzigen Versand. Inzwischen gibt es super()
zum Aufruf von Methoden oder zum Zugriff auf Attribute einer Superklasse.Entspricht super() für functools.singledispatch
Gibt es etwas wie super()
, das mit singledispatch
verwendet werden kann? Ich habe versucht, die folgenden, aber das Ergebnis von super(Derived, value)
ist einfach nicht Instanz Base
, so dass es nicht funktioniert, wie ich es erwartet:
from functools import singledispatch
@singledispatch
def hello(value):
return ['default']
@hello.register(Base)
def hello_base(value):
return hello(super(Base, value)) + ['base']
@hello.register(Derived)
def hello_derived(value):
return hello(super(Derived, value)) + ['derived']
print(hello(Derived())
# expected ['default', 'base', 'derived'],
# but actually is ['default', 'derived'].