Representation of new-style instance

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Thu Aug 2 13:50:18 CEST 2007


En Wed, 01 Aug 2007 20:14:06 -0300, Raj B <rajb at rice.edu> escribió:

> Consider a new-style class
>
> class rabbit(object):
>        def __init__(self,c):
>             self.color = c
>
> r1=rabbit("blue")
> r2=rabbit("purple")
>
> Which C struct in the Python implementation is used to represent the
> instances c1 and c2 of the
> new-style class? I understand that when the class 'rabbit' is
> created, the type_new function
> in typeobject.c creates a copy of a 'struct typeobject' with
> dictionary tp_dict appropriately modified.

Yes. Then, rabbit("blue") means "call rabbit with a single argument,  
blue". The slot tp_call is searched, giving usually type_call, which  
itself calls tp_new (type_new if not overriden). (see type_call in  
typeobject.c).

> However, I can't figure out which structure is used for new-style
> instances and where the instance dictionary is stored. Could anyone
> please clarify?

All objects in Python are based on a PyObject structure; see object.h
Different object types have additional fields at the end, but all share  
the same basic layout.

-- 
Gabriel Genellina




More information about the Python-list mailing list