【问题标题】:Variable annotations on a class类上的变量注释
【发布时间】:2018-03-18 06:07:08
【问题描述】:

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

class MyObject:
    some_variable: float = 1.2

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

class MyObject:
    parent: MyObject = None

当我尝试对注释执行此操作时,我得到“NameError: name 'MyObject' is not defined”。这似乎是一种目前无法成功的不受支持的边缘情况,因为 MyObject 在定义注释时并不完全存在。

【问题讨论】:

    标签: python annotations python-3.6 type-hinting


    【解决方案1】:

    这似乎是 hacky 并且可能不是执行此操作的理想方式,但是 你可以用

    定义MyObject
    class MyObject:
        pass
    

    并将 MyObject 重新定义为:

    class MyObject:
        parent: MyObject = None
    

    【讨论】:

      【解决方案2】:

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

      class MyObject:
          parent: 'MyObject' = None
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-24
        • 2020-12-05
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多