【问题标题】:Class variable that is an instance of itself作为自身实例的类变量
【发布时间】:2020-02-18 20:22:08
【问题描述】:

这样的事情可能吗?

class Foo:
    BAR = Foo("bar")
    def __init__(self, name):
        self.name = name

目前这会产生NameError: name 'Foo' is not defined

【问题讨论】:

    标签: python class variables


    【解决方案1】:

    没有。 annotations 仅适用于变量和函数注释。在class 语句完全执行之前,没有要实例化的类Foo。您必须等到Foo 被定义后才能创建它的实例。

    class Foo:
        def __init__(self, name):
            self.name = name
    
    Foo.BAR = Foo("bar")
    

    您总是可以初始化BAR = None,然后在定义类之后更改属性的值。

    class Foo:
        BAR = None  # To be a Foo instance once Foo is defined
        ...
    
    Foo.BAR = Foo("bar")  # Fulfilling our earlier promise
    

    这对于文档目的可能是可取的,以便在定义中更清楚地说明Foo.BAR 存在,尽管具有不同的值。不过,我想不出这种情况是必要的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2022-06-23
      • 2020-03-22
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多