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
我正在尝试在某些代码中构建一个对象图,其中我在 Python 3.6 中对 class 属性使用类型提示。通常是这样的:
class MyObject:
some_variable: float = 1.2
我的问题是我想要一个类型为 MyObject 的属性,如下所示:
class MyObject:
parent: MyObject = None
当我尝试这样做时,我得到 "NameError: name 'MyObject' is not defined" 当我尝试在注释上这样做时。这似乎是一个目前无法成功的不受支持的边缘情况,因为 MyObject 在定义注释时并不完全存在。
这似乎很老套,可能不是理想的方式,但是 你可以用
定义 MyObjectclass MyObject:
pass
并将 MyObject 重新定义为:
class MyObject:
parent: MyObject = None
这可以使用 forward references 来完成。所以你的代码看起来像这样:
class MyObject:
parent: 'MyObject' = None