list equal to subclass of list?

Ethan Furman ethan at stoneleaf.us
Thu May 12 17:48:20 EDT 2011


Roy Smith wrote:
> On May 12, 2:29 pm, Ethan Furman <et... at stoneleaf.us> wrote:
> 
>> While it is wrong (it should have 'built-in' precede the word 'types'),
>> it is not wrong in the way you think -- a subclass *is* a type of its
>> superclass.
> 
> Well, consider this:
> 
> class List_A(list):
>     "A list subclass"
> 
> class List_B(list):
>     "Another list subclass"
> 
> a = List_A()
> b = List_B()
> print a == b
> 
> It prints "True".  Neither a nor b are a type of the other:
> 
> print isinstance(List_A, List_B)
> print isinstance(List_B, List_A)
> 
> False
> False

Okay, considering:
     List_A is a user-defined type.
     List_B is a user-defined type.
     Both are sub-classes of list.
     Corrected documentation (which says 'built-in types' etc, etc) says 
nothing about user-defined types not being able to be equal to each other
     neither List_A nor List_B have overridden the __eq__ method, so 
list.__eq__ will be used...

conclusion:
     if they have equal elements in the same order, they will compare 
equal since they are, in fact, list's

Do you not get the same conclusion?

~Ethan~



More information about the Python-list mailing list