Weakrefs to classes that derive from str

Ron Garret rNOSPAMon at flownet.com
Thu Mar 31 01:12:44 EST 2005


In article <RgJ2e.26268$I16.3183 at trndny03>,
 "Raymond Hettinger" <vze4rx4y at verizon.net> wrote:

> [Ron Garret]
> > Thanks for the detailed explanation.  I understand now why you can't
> > create weakrefs to these types.  What I don't understand still is why
> > you can't create weakrefs to user-defined classes that inherit from
> > these types.  I would think that instances of user-defined classes have
> > the same header structure regardless of what they inherit from.  This
> > would seem to be supported by the fact that you can create weakrefs to
> > instances of user-defined classes that inherit from int and float.
> 
> It is an over-statement to say that it can't be done.  In fact, Michael 
> Hudson
> is already working on a patch.
> 
> It is more accurate to say that the current mechanism doesn't allow it.
> Michael's solution is to build a new mechanism.
> 
> The existing mechanism has a subclass extend the superclass's structure:
> 
>   [--someobj--][--subclassdata--]
>                                        ^
>                                        |
>   |---- offset to wr table ---
> 
> The offset is fixed for the type and must be the same across instances.
> 
> This is a problem for tuples and ints because someobj is of varying length:
> 
>  [--tuple header, elem0, elem1, elem2--]
>  [--tuple header, elem0 ]
> 
> In contrast, ints and floats floats have no problem because they are always 
> the
> same size:
> 
>  [--int header, int value--]
> 
> 
> Raymond Hettinger

I see.  Thanks!

rg



More information about the Python-list mailing list