[Python-3000] Types and classes

Amaury Forgeot d'Arc amauryfa at gmail.com
Thu Apr 3 00:03:58 CEST 2008


Hello,

On Wed, Apr 2, 2008 at 11:57 PM, Paul Prescod <paul at prescod.net> wrote:
> Apologies if this has been discussed before.
>
>  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.

-- 
Amaury Forgeot d'Arc


More information about the Python-3000 mailing list