Patches item #1173475, was opened at 2005-03-30 17:09 Message generated for change (Comment added) made by arigo You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1173475&group_id=5470
Category: Core (C code) Group: Python 2.5 Status: Open Resolution: None Priority: 5 Submitted By: Michael Hudson (mwh) Assigned to: Armin Rigo (arigo) Summary: __slots__ for subclasses of variable length types Initial Comment: This is a first, rough cut at allowing subclasses of variable length types to have __slots__ of all flavours, not just __dict__. The motivation is trying to understand and document what's going on in typeobject.c, and the less special cases knocking around the better. This patch also allows instances of such classes to be weakly referenced. What is missing: tests, lots of tests, documentation. Also, the code is a bit hackish at various points; a degree of clean up can certainly be acheived. Also, I think my code probably fails to cope with code like: class A(str): pass # implicitly adds __dict__, __weakref__ class B(A): __slots__ = ["a", "b"] b = B() b.c = 1 Hmm, yes. Oh well, no time to fix today (I don't think it's that big a deal). ---------------------------------------------------------------------- >Comment By: Armin Rigo (arigo) Date: 2005-04-03 14:11 Message: Logged In: YES user_id=4771 I'm confused: the rule for negative slot offsets appear to be different to the one for tp_dictoffset, which only increases the amount of obscurity around here. tp_dictoffset counts relative to the end of the object, whereas in your patch negative slot offsets are a different trick to mean "relative to the start but skipping the varsized part". The difference shows up when subclassing increases tp_basicsize. This should be resolved one way or the other -- and I think that a clear picture of the various parts of the object and how they are measured would be a good start. That's also related to your proposed change to extra_ivars(), which would become slightly more permissive; I strongly suspect that it would allow more strange segfaulting cases to sneak in undetected... ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1173475&group_id=5470 _______________________________________________ Patches mailing list [email protected] http://mail.python.org/mailman/listinfo/patches
