[EMAIL PROTECTED] wrote: > I not only want to compare class *instances* but also the classes > themselves. Something like: > sorted([B, A]) => [A, B] > > My motivation for doing so is simply to sort classes based on their > names and not (as it seems is the default behaviour) on the order in > which they were created. > > I guess I could always just do something like sorted(classes, > key=lambda cls: cls.__name__)...but where's the fun in that? :-)
A class is just an instance of its metaclass. Therefore the metaclass is the right place to implement the __cmp__() method: >>> class T: ... class __metaclass__(type): ... def __cmp__(cls, other): ... return cmp(cls.__name__, other.__name__) ... >>> class B(T): pass ... >>> class A(T): pass ... >>> class C(T): pass ... >>> sorted([C, B, A]) [<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>] Peter -- http://mail.python.org/mailman/listinfo/python-list