2016-07-15 85 views
1

我有一個類,指定一個CSV文件的列布局爲:如何按照定義的順序獲取類變量列表?

class RecordLayout(object): 
    YEAR = 0 
    DATE = 1 
    MONTH = 2 
    ID = 3 
    AGE = 4 
    SALARY = 5 

我需要讓它們被定義的順序類變量列表。

到目前爲止,我想:

[attr for attr in dir(RecordLayout()) if not callable(attr) and not attr.startswith("__")] 

但它返回:

['AGE', 'DATE', 'ID', 'MONTH', 'SALARY', 'YEAR'] 

這是按字母順序排序類變量。我需要按照它們在類中定義的順序返回變量:

['YEAR', 'DATE', 'MONTH', 'ID', 'AGE', 'SALARY'] 

是否有辦法實現此目的?

+0

*「我需要變量按照它們定義的順序返回」* - 爲了什麼目的? – jonrsharpe

+0

它們被定義的順序不被記住,你需要以其他方式來完成。 – RemcoGerlich

+0

@jonrsharpe:獲取列表中csv文件的標題。 – Malgi

回答

3

您應該爲此使用Enum

>>> class RecordLayout(Enum): 
...  YEAR = 0 
...  DATE = 1 
...  MONTH = 2 
...  ID = 3 
...  AGE = 4 
...  SALARY = 5 
... 
>>> for i in RecordLayout: 
... print(i) 
... 
RecordLayout.YEAR 
RecordLayout.DATE 
RecordLayout.MONTH 
RecordLayout.ID 
RecordLayout.AGE 
RecordLayout.SALARY 
+0

謝謝丹。我可以做這樣的事情[name for name,RecordLayout .__ members __。items()]中的成員,它返回['YEAR','DATE','MONTH','ID','AGE','SALARY']。 – Malgi

相關問題