functools.singledispatch
은 단일 디스패치 일반 메서드를 정의하는 데 도움이됩니다. 한편 메소드를 호출하거나 수퍼 클래스의 속성에 액세스하는 데는 super()
이 있습니다.functools.singledispatch에 대한 super()와 같습니다.
singledispatch
과 함께 사용할 수있는 super()
과 같은 것이 있습니까? 나는 다음을 시도했지만 super(Derived, value)
의 결과는 Base
의 그냥 예, 그래서 내가 예상대로 작동하지 않습니다 :
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'].