[英]Create static attribute of class (attribute is instance of that same class)
假設我有一個定義如下的類:
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函數,將類的新實例返回給class屬性,但是我寧願不必編寫括號。
如果要在類中甚至早於定義Foo
之前使用行baz = Foo("baz")
。 這是不可能的,即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
類,因此將通過為好類的所有實例繼承:
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
類的對象和baz
也是Foo
的類屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.