如何在Python 3.5中键入提示属性?

akv*_*las 8 python attributes type-hinting

我有一个类,我希望属性的初始值为None:

class SomeClass:
    def __init__(self):
        self.some_attribute = None
Run Code Online (Sandbox Code Playgroud)

如何添加类型提示,以便IDE了解some_attribute通常属于AnotherClass哪种类型?

L3v*_*han 13

在Python 3.5中,你必须写

self.some_attribute = None  # type: AnotherClass
Run Code Online (Sandbox Code Playgroud)

从Python 3.6开始,为变量添加了新的类型提示语法(PEP 526):

self.some_attribute: AnotherClass = None
Run Code Online (Sandbox Code Playgroud)

这可能会使每个类型检查系统都抱怨,因为None实际上不是AnotherClass的实例.相反,你可以使用typing.Union[None, AnotherClass],或简写:

from typing import Optional
...
self.some_attribute: Optional[AnotherClass] = None
Run Code Online (Sandbox Code Playgroud)