【问题标题】:How to annotate optional class properties correctly?如何正确注释可选类属性?
【发布时间】:2020-11-29 20:02:35
【问题描述】:

我有以下示例类,可选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' 分配给@property a。 setter 方法测试 'abc' 是否为 None,如果是,则将其替换为默认字符串。所以 getter 的返回值总是来自 str 类型,不再是可选的。但我找不到正确注释它们的方法。我总是得到以下 mypy 错误:

Incompatible types in assignment (expression has type "Optional[str]", variable has type "str")

【问题讨论】:

    标签: python annotations type-hinting mypy python-typing


    【解决方案1】:

    据我所知,从未支持具有不同 getter 和 setter 类型的属性。见this discussion

    我可以建议使用相同的类型或# type: ignore

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 2021-10-16
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多