【发布时间】:2011-05-12 08:50:18
【问题描述】:
我想定义应该表示数据结构的轻量级类。与许多数据结构一样,数据的顺序很重要。所以如果我继续定义这个:
class User(DataStructure):
username = StringValue()
password = StringValue()
age = IntegerValue()
我的意思是这是一个数据结构,其中首先是一个带有用户名的字符串,然后是一个带有密码的字符串,最后是用户的年龄作为整数。
如果你熟悉 Python,就会知道上面的类 User 是一个继承自 type 的对象。就像 Python 中的大多数其他对象一样,它将具有__dict__。这就是我的问题。这个__dict__ 是一个哈希映射,所以__dict__ 中的类属性的顺序与它们的定义顺序没有任何关系。
有什么办法可以找出实际的定义顺序吗?在我使用我能想到的不太理智的方法之一之前,我在这里问...
哦,要明确一点,我想要的是一种摆脱上述定义的方法:['username', 'password', 'age']
【问题讨论】:
-
作为参考,我的“不太理智”的解决方案:每次实例化
*Value类时都有一个计数器上升,并将新值设置为该实例,然后按此排序属性列表价值。这将使用元类来完成。 -
按照您在此处描述的方式使用元类是我唯一想到的事情。
-
嗯,计数器是 Django 团队的做法,所以我相当肯定这是最好的做法。
标签: python oop class data-structures hash