Ordering attributes for dynamically generated class
Duncan Booth
duncan.booth at invalid.invalid
Sun Jan 18 11:45:24 EST 2009
Aaron Brady <castironpi at gmail.com> wrote:
> On Jan 18, 9:52 am, David Pratt <fairwinds... at gmail.com> wrote:
>> Hi list. I use 'type' to generate classes but have a need to order
>> the attributes for the generated class. Of course a dict is not going
>> to maintain ordering. Is there any way to dynamically generate a
>> class with attributes in specific order?
>>
>> my_new_class = type( 'MyNewClass', tuple_of_bases, dict_of_attributes)
>>
>> Many thanks,
>> David
>
> Just a thought, you can subclass 'dict' and assign an instance of it
> to the __dict__ member of your new instance.
>
You can certainly pass a subclass of 'dict' to type(), in fact in Python
3.0 you can use a metaclass with a __prepare__ method to substitute your
own value for __dict__ in any class definition, but I don't think your own
type will preserved when the instance is actually constructed.
A simple solution which works in any version of Python is just to maintain
an attribute with the desired ordering and override __dir__ to return the
attributes in that order.
More information about the Python-list
mailing list