用作 return 类型时无法识别枚举名称
Enum name not recognized when used as a return type
我有这个 Python 3.7 代码:
from enum import Enum, auto
class MyClass:
def calculate(self, data: str):
new_state: Optional[State] = self._get_state(data)
def _get_state(self, data: str) -> State:
state: State = State.DEFAULT
return state
class State(Enum):
DEFAULT = auto()
STATE_1 = auto()
PyCharm _get_state
方法的 return 类型有问题,报告:Unresolved reference 'State'
。当我尝试 运行 代码时,我得到 NameError: name 'State' is not defined
.
但是,State
引用 calculate
方法中的 new_state: Optional[State] = _get_state()
和 _get_state
方法中的 state: State = State.DEFAULT
工作得很好。
这是为什么?
函数签名中的类型注释在定义 class 时计算,而不是在调用它们时计算。所以在定义MyClass
.
之前需要先定义State
class
函数体中的注解在函数被调用之前不会被处理,这就是它们仍然以任一顺序工作的原因。
我有这个 Python 3.7 代码:
from enum import Enum, auto
class MyClass:
def calculate(self, data: str):
new_state: Optional[State] = self._get_state(data)
def _get_state(self, data: str) -> State:
state: State = State.DEFAULT
return state
class State(Enum):
DEFAULT = auto()
STATE_1 = auto()
PyCharm _get_state
方法的 return 类型有问题,报告:Unresolved reference 'State'
。当我尝试 运行 代码时,我得到 NameError: name 'State' is not defined
.
但是,State
引用 calculate
方法中的 new_state: Optional[State] = _get_state()
和 _get_state
方法中的 state: State = State.DEFAULT
工作得很好。
这是为什么?
函数签名中的类型注释在定义 class 时计算,而不是在调用它们时计算。所以在定义MyClass
.
State
class
函数体中的注解在函数被调用之前不会被处理,这就是它们仍然以任一顺序工作的原因。