2016-07-15 91 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