2013-04-02 140 views
0

我正在定義一個python類,並希望聲明一組類屬性,然後在初始化列表時使用這些屬性,這些屬性也將作爲類屬性存儲。如何將python類屬性設置爲另一個以前在類定義中定義的類屬性的值?

class SampleClass(models.Model): 

    #---------------------------------------------------------------------- 
    # Class attributes 
    #---------------------------------------------------------------------- 

    # field names 
    FIELD_NAME_ID = "ID" 
    FIELD_NAME_USER = "User" 

    # Field name list 
    FIELD_NAME_LIST = [] 
    FIELD_NAME_LIST.append(SampleClass.FIELD_NAME_ID) # = "ID" 
    FIELD_NAME_LIST.append(SampleClass.FIELD_NAME_USER) # = "User" 

    # rest of class definition 
    # ... 

#-- END class SampleClass --# 

這與Java類似於定義類變量,然後使用它們初始化其他隨後定義的類變量。

在這個例子中,我嘗試使用類名來引用它們,例如:SampleClass.FIELD_NAME_ID

這不起作用(它打破了類定義)。

添加列表中的項目是這樣的:

FIELD_NAME_LIST.append("ID") # = "ID" 

工作正常。

在python中初始化另一個類時,有沒有辦法使用一個類屬性?

回答

2

類的主體是作爲一個函數執行的,並且本地命名空間條目成爲類的屬性。所以,類主體的執行過程中,你可以把其他的名字爲局部變量:

FIELD_NAME_ID = "ID" 
FIELD_NAME_USER = "User" 

FIELD_NAME_LIST = [FIELD_NAME_ID, FIELD_NAME_USER] 

你已經發現了這一點,因爲你叫FIELD_NAME_LIST.append("ID")成功。

+0

This Works!謝謝!還有一個很好的解釋。 –