如何正确注释可选的 class 属性?
How to annotate optional class properties correctly?
我有以下示例 class,可选 str
'abc'。
class ABC:
def __init__(self, abc: Optional[str] = None) -> None:
self.a = abc
@property
def a(self) -> str:
return self._a
@a.setter
def a(self, abc: Optional[str]) -> None:
if abc is None:
self._a: str = "ABC"
else:
self._a = abc
'abc'赋值给@属性a
。 setter 方法测试 'abc' 是否为 None,如果是,则将其替换为默认字符串。所以 getter 的 return 值总是来自类型 str
并且不再是可选的。但是我找不到正确注释它们的方法。我总是遇到以下 mypy 错误:
Incompatible types in assignment (expression has type "Optional[str]", variable has type "str")
据我所知,从未支持具有不同 getter 和 setter 类型的属性。参见 this discussion
我可以建议使用相同的类型或# type: ignore
我有以下示例 class,可选 str
'abc'。
class ABC:
def __init__(self, abc: Optional[str] = None) -> None:
self.a = abc
@property
def a(self) -> str:
return self._a
@a.setter
def a(self, abc: Optional[str]) -> None:
if abc is None:
self._a: str = "ABC"
else:
self._a = abc
'abc'赋值给@属性a
。 setter 方法测试 'abc' 是否为 None,如果是,则将其替换为默认字符串。所以 getter 的 return 值总是来自类型 str
并且不再是可选的。但是我找不到正确注释它们的方法。我总是遇到以下 mypy 错误:
Incompatible types in assignment (expression has type "Optional[str]", variable has type "str")
据我所知,从未支持具有不同 getter 和 setter 类型的属性。参见 this discussion
我可以建议使用相同的类型或# type: ignore