我想定义应该代表数据结构的轻量级类.与许多数据结构的情况一样,数据的顺序很重要.所以,如果我继续定义:
class User(DataStructure): username = StringValue() password = StringValue() age = IntegerValue()
我暗示这是一个数据结构,其中首先是带有用户名的字符串,后跟带有密码的字符串,最后是用户的年龄作为整数.
如果你熟悉Python,你就会知道上面的类User是一个继承自类型的对象.就像Python中的大多数其他对象一样,它会有__dict__.这里存在我的问题.这个__dict__是一个哈希映射,因此__dict__中类属性的顺序与它们的定义顺序无关.
解决方法
这在Python中根本不受支持. Django使用元类来处理它.看到这个问题:
How does Django Know the Order to Render Form Fields?
(摘要:查看django.forms.forms.DeclarativeFieldsMetaclass,django.forms.forms.get_declared_fields以及如何在django.forms.fields.Field中使用creation_counter.)