2012-05-30 57 views
3

也許標題有點搞砸了,但是有沒有辦法在Python中的同一個類中創建一個類的實例?用Python裏面的一個實例聲明一個類

事情是這樣的:

class Foo: 
    foo = Foo() 

我知道解釋說,富不聲明,但有沒有辦法實現這一目標?

更新:

這就是我想要做的事:

class NPByteRange (Structure): 
    _fields_ = [ ('offset', int32), 
       ('lenght', uint32), 
       ('next', POINTER(NPByteRange)) ] 
+0

這是一種無限遞歸......你想完成什麼? – froadie

+3

人們不禁想知道爲什麼你想創建一個無限循環的類實例化? –

+0

可能的重複http://stackoverflow.com/questions/8370472/python3-and-recursive-class – iTayb

回答

4

的解釋只有當你嘗試做在Foo未聲明的情況下頭腦。有它的背景。最簡單的例子是一個方法:

>>> class Beer(object): 
... def have_another(self): 
...  return Beer() 
... 
>>> x=Beer() 
>>> x.have_another() 
<__main__.Beer object at 0x10052e390> 

如果其重要的對象是一個屬性,你可以使用內置property

>>> class Beer(object): 
... @property 
... def another(self): 
...  return Beer() 
... 
>>> guinness=Beer() 
>>> guinness.another 
<__main__.Beer object at 0x10052e610> 

最後,如果是真正必要的,這是一個財產,那麼,you can do that, too

+0

@ user1426948該評論應該是您問題的一部分,而不是對答案的評論。 – kojiro

+0

@ user1426948是否有某些原因導致'_fields_'屬性不能成爲實例屬性,或者在'__init__'時間設置? – kojiro

+0

嗯,我仍然不確定,我只是做一些實驗,但我會嘗試並讓你知道。 – user1426948

相關問題