On Wed, Apr 2, 2008 at 3:03 PM, Amaury Forgeot d'Arc <[EMAIL PROTECTED]> wrote:
>  On Wed, Apr 2, 2008 at 11:57 PM, Paul Prescod <[EMAIL PROTECTED]> 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/)
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to