__cmp__ method

JH john.hsu at sovereign.co.nz
Wed Jun 14 18:41:56 EDT 2006


Hi

Can anyone explain to me why the following codes do not work? I want to
try out using __cmp__ method to change the sorting order. I subclass
the str and override the __cmp__ method so the strings can be sorted by
the lengh. I expect the shortest string should be in the front. Thanks

>>> class myStr(str):
    def __init__(self, s):
        str.__init__(self, s) # Ensure super class is initialized
    def __cmp__(self, other):
        return cmp(len(self), len(other))

>>> a = myStr('abc')
>>> b = myStr('Personal')
>>> c = myStr('Personal firewall')
>>> sorted([c, b, a])
['Personal', 'Personal firewall', 'abc']
>>>




More information about the Python-list mailing list