[Python-Dev] Re: lists v. tuples

Guido van Rossum guido@python.org
Fri, 14 Mar 2003 12:55:22 -0500


> FWIW, I quite like the way how the core classes in Cocoa/NextStep are
> designed. For each container-ish object there's a mutable an immutable
> variant, where the mutable variant is usually a subclass of the
> immutable one. Examples:
>   NSString -> NSMutableString
>   NSData -> NSMutableData
>   NSArray -> NSMutableArray
>   NSDictionary -> NSMutableDictionary

This has its downside too though.  A function designed to take an
immutable class instance cannot rely on the class instance to remain
unchanged, because the caller could pass it an instance of the
corresponding mutable subclass!  (For example, the function might use
the argument as a dict key.)  In some sense this inheritance pattern
breaks the "Liskov substibutability" principle: if B is a base class
of C, whenever a B instance is expected, a C instance may be used.

--Guido van Rossum (home page: http://www.python.org/~guido/)