class 上的变量注释

Variable annotations on a class

我正在尝试在某些代码中构建一个对象图,其中我在 Python 3.6 中对 class 属性使用类型提示。通常是这样的:

class MyObject:
    some_variable: float = 1.2

我的问题是我想要一个类型为 MyObject 的属性,如下所示:

class MyObject:
    parent: MyObject = None

当我尝试这样做时,我得到 "NameError: name 'MyObject' is not defined" 当我尝试在注释上这样做时。这似乎是一个目前无法成功的不受支持的边缘情况,因为 MyObject 在定义注释时并不完全存在。

这似乎很老套,可能不是理想的方式,但是 你可以用

定义 MyObject
class MyObject:
    pass

并将 MyObject 重新定义为:

class MyObject:
    parent: MyObject = None

这可以使用 forward references 来完成。所以你的代码看起来像这样:

class MyObject:
    parent: 'MyObject' = None