2016-09-07 79 views
0

從CPP/C#的到來,一個人如何指的是同一類的類主體在Python:靜態類屬性指向同一個類的特例在Python

class Foo(object): 
    ANSWER = Foo(42) 
    FAIL = Foo(-1) 

    def __init__(self, value): 
     self._v = value 

當我嘗試使用此代碼,我得到「name」Foo'未定義「異常在試圖實例化ANSWER實例的行中。

回答

1

名稱Foo在執行完整的類體之前未設置。你可以做你想做什麼的唯一方法是將屬性添加到後class聲明已經完成了類

class Foo(object):  
    def __init__(self, value): 
     self._v = value 

Foo.ANSWER = Foo(42) 
Foo.FAIL = Foo(-1) 

這聽起來像你正在重新發明了Python的enum module;它可以讓你定義一個是真的類的實例常量類:即class語句運行

from enum import Enum 

class Foo(Enum): 
    ANSWER = 42 
    FAIL = -1 

後,Foo.ANSWERFoo.value屬性設置爲42一個實例。