[Python-Dev] Sets are mappings?

M.-A. Lemburg mal at egenix.com
Wed Dec 21 00:52:55 CET 2005


Aahz wrote:
> On Tue, Dec 20, 2005, M.-A. Lemburg wrote:
>> Josiah Carlson wrote:
>>> New superclasses for all built-in types (except for string and unicode,
>>> which already subclass from basestring).
>>>
>>> int, float, complex (long) : subclass from basenumber
>>> tuple, list, set : subclass from basesequence
>>> dict : subclass from basemapping
>> set should be under basemapping.
> 
> Are you sure?  Sets are not actually a mapping; they consist only of
> keys. 

You're right, sets should really have a separate base class.

However, in reality they behave mostly like dictionaries
using (and hiding) a common value of all keys.

> The Python docs do not include sets under maps, and sets do not
> support some of the standard mapping methods (notably keys()).  Raymond
> Hettinger has also talked about switching to a different internal
> structure for sets.

basestring is an abstract class in the sense that it
doesn't provide any interface on its own. I guess the others
should use the same approach.

They are usually only used for quickly checking for an
interface or "type property".

Note that unicode and strings don't share a common implementation
either - they just happen to expose a rather similar interface.

> (Should this discussion move to c.l.py?  Normally I'd think so, but I
> think it's critical that the core developers agree about this.  It's
> also critical for me to know because I'm writing a book, but that's not
> reason enough to stick with python-dev. ;-)

Not sure about others. I rarely read c.l.p. Even pydev has
enough traffic these days to require filtering.

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Dec 21 2005)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::


More information about the Python-Dev mailing list