L
Lee Harr
Let's say I have a class
class A:
def __init__(self, level):
self.level = level
and I want to put some of these in a list and sort the list
by level
a1 = A(1)
a2 = A(2)
l = [a1, a2]
l.sort()
Am I better off creating a __cmp__ method for my class or
making a cmp function to pass to sort?
My thought was that __cmp__ would be perfect, but then I
started thinking about this ...
.... def __init__(self, level):
.... self.level = level
.... def __cmp__(self, other):
.... if self.level > other.level:
.... return 1
.... elif self.level < other.level:
.... return -1
.... else:
.... return 0
........ pass
....Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 5, in __cmp__
AttributeError: C instance has no attribute 'level'
Should I be catching comparisons to objects that do not have
my 'level' attribute and falling back to id comparison?
Or am I worried about nothing (YAGNI
) ?
Is this related in any way to interfaces?
class A:
def __init__(self, level):
self.level = level
and I want to put some of these in a list and sort the list
by level
a1 = A(1)
a2 = A(2)
l = [a1, a2]
l.sort()
Am I better off creating a __cmp__ method for my class or
making a cmp function to pass to sort?
My thought was that __cmp__ would be perfect, but then I
started thinking about this ...
.... def __init__(self, level):
.... self.level = level
.... def __cmp__(self, other):
.... if self.level > other.level:
.... return 1
.... elif self.level < other.level:
.... return -1
.... else:
.... return 0
........ pass
....Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 5, in __cmp__
AttributeError: C instance has no attribute 'level'
Should I be catching comparisons to objects that do not have
my 'level' attribute and falling back to id comparison?
Or am I worried about nothing (YAGNI
Is this related in any way to interfaces?