簡體   English   中英

創建類的靜態屬性(屬性是同一類的實例)

[英]Create static attribute of class (attribute is instance of that same class)

假設我有一個定義如下的類:

class Foo():
   baz = None
   def __init__(self, bar):
       self.bar = bar

現在,在該示例中, Foo.bazNone 現在讓我們說這個類屬性必須是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.bazFoo.baz.bazFoo.baz.baz.baz等全部成為Foo對象,因為Foo.baz具有值Foo('foo')Foo類的對象和baz也是Foo的類屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM