In article <[EMAIL PROTECTED]>, "Raymond Hettinger" <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list