Is a list an instance of a class?

Dan Bishop danb_83 at yahoo.com
Mon Nov 15 07:01:05 EST 2004


Kent Johnson <kent3737 at yahoo.com> wrote in message news:<4197c013$1_1 at newspeer2.tds.net>...
> In the Python tutorial section 9.1, it says, "the word ``object'' in 
> Python does not necessarily mean a class instance. Like C++ and 
> Modula-3, and unlike Smalltalk, not all types in Python are classes: the 
> basic built-in types like integers and lists are not, and even somewhat 
> more exotic types like files aren't."
> 
> Is this still correct or was it made obsolete by Python 2.2? Lists and 
> files have __class__ attributes, at least:

For all practical purposes, it's obsolete.  You can inherit from "non-classes" now.

>>> class TallyMarks(int):
...    def __repr__(self):
...       return 'I' * self
...
>>> TallyMarks(12)
IIIIIIIIIIII


>  >>> [].__class__
>  <type 'list'>
>  >>> f = open('ThreadQueue.py')
>  >>> f.__class__
> <type 'file'>
> 
> So do integers and floats, though you have to ask nicely for an int:
>  >>> 1.__class__
>    File "<stdin>", line 1
>      1.__class__
>                ^
> SyntaxError: invalid syntax
>  >>> x=1
>  >>> x.__class__
>  <type 'int'>

You don't have to ask *that* nicely.

>>> 1 .__class__  # notice the space
<type 'int'>



More information about the Python-list mailing list