7.16 Objects in collections
If you write a new class and plan to put its instances in a list, there are no special requirements. The list will hold the items in the order in which you place them. An operation like reverse, which only changes the list order in place, works fine.
polys = [UniPoly(1, 'x', 2), UniPoly(2, 'x', 3), UniPoly(3, 'x', 4)]
polys
[x**2, 2*x**3, 3*x**4]
polys.reverse()
polys
[3*x**4, 2*x**3, x**2]
Generally, you do want to tell when one instance is equal to another, so you should
implement __eq__. For completeness, I often define __ne__ as well. Python
uses these for “==
” and “!=
”,
respectively. If __ne__ is missing, Python negates the
result of __eq__.
If you plan to sort the list, you need a way to compare items to know which object is “less than” another. For the sorted function...