ale*_*wis 0 python variables class
这样的事情可能吗?
class Foo:
BAR = Foo("bar")
def __init__(self, name):
self.name = name
Run Code Online (Sandbox Code Playgroud)
目前这产生NameError: name 'Foo' is not defined.
不,annotations仅适用于变量和函数注释。在class语句完全执行之前,没有Foo要实例化的类。您必须等到Foo定义之后才能创建它的实例。
class Foo:
def __init__(self, name):
self.name = name
Foo.BAR = Foo("bar")
Run Code Online (Sandbox Code Playgroud)
您始终可以初始化BAR = None,然后在定义类后更改属性的值。
class Foo:
BAR = None # To be a Foo instance once Foo is defined
...
Foo.BAR = Foo("bar") # Fulfilling our earlier promise
Run Code Online (Sandbox Code Playgroud)
出于文档目的,这可能是可取的,以便在Foo.BAR 将存在的定义中使其更加清晰,尽管具有不同的值。不过,我想不出有必要这样做的情况。