假设我有一个定义如下的类:
class Foo():
baz = None
def __init__(self, bar):
self.bar = bar
现在,在该示例中,Foo.baz
是None
。现在假设这个类属性需要是 Foo
的实例,如下所示:
class Foo():
baz = Foo("baz")
def __init__(self, bar):
self.bar = bar
我该如何进行?
同样,有没有办法创建“类属性”。我知道我可以将返回类的新实例的 lambda 函数分配给类属性,但我不想编写括号。
最佳答案
如果您想在类中使用 baz = Foo("baz")
行,甚至在之前定义 Foo
之前;这是不可能的,即 Python 会向您抛出 NameError: name 'Foo' is not Defined
,但这里有一个解决方法来实现您的意图:
class Foo:
def __init__(self, bar):
self.bar = bar
Foo.baz=Foo('foo')
现在 Foo.baz
是 Foo
类的实例,同时 baz
是 Foo
的类属性code> 类,因此也将被该类的所有实例继承:
myFoo = Foo('myFoo')
您可以验证 myFoo.baz.bar
实际上是 'foo'
而不是 'myFoo'
print(myFoo.bar)
# myFoo
print(myFoo.baz.bar)
# foo
还要注意,这会导致 Foo.baz
、Foo.baz.baz
、Foo.baz.baz.baz
等全部是 Foo
对象,因为 Foo.baz
具有值 Foo('foo')
即 Foo
的对象class 和 baz
也是 Foo
的类属性。
关于python - 创建类的静态属性(属性是同一类的实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498855/