Я хочу иметь возможность сделать это:
from typing import Type
from functools import singledispatch
class A:
pass
class B(A):
pass
@singledispatch
def foo(arg):
print('default')
@foo.register
def _(arg: Type[A]):
print(arg)
foo(A)
foo(B)
Однако я получаю Invalid annotation for 'arg'. typing.Type[__main__.arg] is not a class.
Полагаю, singledispatch
пока что не полностью поддерживает typing
. Есть какой-нибудь элегантный обходной путь?
UPD
Я не могу изменить A
и B
.