[Python-3000] Types and classes (original) (raw)

Guido van Rossum guido at python.org
Thu Apr 3 00:20:31 CEST 2008


On Wed, Apr 2, 2008 at 3:03 PM, Amaury Forgeot d'Arc <amauryfa at gmail.com> wrote:

On Wed, Apr 2, 2008 at 11:57 PM, Paul Prescod <paul at prescod.net> wrote: > But does anyone else find it odd that the types of some things are > classes and the classes of some things are types? > > >>> type(socket.socket()) > <class 'socket.socket'> > >>> type("abc") > <type 'str'> > >>> socket.socket().class > <class 'socket.socket'> > >>> "abc".class > <type 'str'> > > In a recent talk I could only explain this as a historical quirk. As I > understand, it is now possible to make types that behave basically > exactly like classes and classes that behave exactly like types. Is > there any important difference between them anymore?

I can find one difference: - types are written in C - classes are written in Python and there is a difference in behaviour: most types don't have a writable dict, and you cannot add members. classes are more flexible.

That's more correctly described as the difference between built-in types/classes and user-defined types/classes.

I think it's still just a historical quirk; maybe we should bite the bullet and fix this in py3k. (Still, 'type' and 'class' will both be part of the language, one as a built-in function and metaclass, the other as a keyword.)

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



More information about the Python-3000 mailing list