functools.singledispatch
consente di definire un metodo generico a singola spedizione. Nel frattempo, c'è super()
per chiamare i metodi o accedere agli attributi di una superclasse.Equivale a super() per functools.singledispatch
C'è qualcosa come super()
che può essere utilizzato con singledispatch
? Ho provato quanto segue, ma il risultato di super(Derived, value)
non è solo un'istanza di Base
, quindi non funziona come mi aspettavo:
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'].