[Edu-sig] More introspection w/ Python 2.2a2
Kirby Urner
urnerk@qwest.net
Sun, 26 Aug 2001 23:31:36 -0400
More introspection in Python 2.2a2:
>>> t = type(3)
>>> t
<type 'int'>
t is a metaclass, the type of 3, i.e. an integer.
You can create a new instance of an integer by calling
the integer type:
>>> t()
0
>>> t(1)
1
These instances are type integer:
>>> type(t(1))
<type 'int'>
But the type object that gets returned as <type 'int'> is an instance of
type, a metaclass:
>>> t.__class__
<type 'type'>
Using the introspection function from the last post:
>>> ls(t)
['__module__', '__bases__', '__itemsize__', '__dynamic__', '__hash__',
'__str__', '__weakrefoffset__', '__dict__', '__name__', '__cmp__',
'__init__', '__setattr__', '__basicsize__', '__new__', '__base__',
'__flags__', '__class__', '__getattr__', '__mro__', '__delattr__', 'mro',
'__repr__', '__dictoffset__', '__call__', '__defined__', '__doc__']
These are the methods of the type metaclass -- nothing to do with integers
per se.
>>> t.__module__
'__builtin__'
The type metaclass is itself a subclass of a yet more generic type
object.
>>> t.__bases__
(<type 'object'>,)
>>> z = t.__bases__[0]
>>> ls(z)
['__module__', '__bases__', '__itemsize__', '__dynamic__', '__hash__',
'__str__', '__weakrefoffset__', '__dict__', '__name__', '__cmp__',
'__init__', '__setattr__', '__basicsize__', '__new__', '__base__',
'__flags__', '__class__', '__getattr__', '__mro__', '__delattr__', 'mro',
'__repr__', '__dictoffset__', '__call__', '__defined__', '__doc__']
Seems to be the same basic animal.
What are __flags__ ? Hell if I know:
>>> t.__flags__
4603
>>> t.__new__
<built-in method __new__ of type object at 0x80e3620>
I've been hearing about this __new__ thingy. Anyone want to elucidate?
All ears.
Kirby