我有与此示例类似的代码
import typing
class C():
def __init__(self, callback: typing.Callable[[C], int]):
self._callback = callback
def getCallback() -> typing.Callable[[C], int]:
return self._callback
class C2():
def __init__(self, cInstance: C):
self._cInstance = cInstance
def f() -> typing.NoReturn:
self._cInstance.getCallback()(self.cInstance)
我想为 typing.Callable[[C], int] 添加类型别名
但是当我尝试这样做时
import typing
CallbackType = typing.Callable[[C], int] # ERROR: C not defined
class C():
def __init__(self, callback: CallbackType):
self._callback = callback
def getCallback() -> CallbackType:
return self._callback
class C2():
def __init__(self, cInstance: C):
self._cInstance = cInstance
def f() -> typing.NoReturn:
self._cInstance.getCallback()(self.cInstance)
我收到错误,当时未定义C
。如果我在class C
之后定义CallbackType,则CallbackType不会在C
的__init__
中定义。在示例中,输入足够短,但在我的实际代码中,它非常复杂,这就是我想添加别名的原因。
最佳答案
您可以使用forward references :
CallbackType = typing.Callable[['C'], int]
关于python - 如何在声明类之前为类中使用的类型添加别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75955196/