diff options
author | Guido van Rossum <guido@python.org> | 2001-10-08 15:18:27 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-10-08 15:18:27 (GMT) |
commit | 1c45073aba8f4097b4dc74d4fd3b2f5ed5e5ea9b (patch) | |
tree | 60b870fedf9a942d17a1eed7c852fca73176d5ae /Include | |
parent | 4c398fde5c76847e12eb265716f35a57ce035822 (diff) | |
download | cpython-1c45073aba8f4097b4dc74d4fd3b2f5ed5e5ea9b.zip cpython-1c45073aba8f4097b4dc74d4fd3b2f5ed5e5ea9b.tar.gz cpython-1c45073aba8f4097b4dc74d4fd3b2f5ed5e5ea9b.tar.bz2 |
Keep track of a type's subclasses (subtypes), in tp_subclasses, which
is a list of weak references to types (new-style classes). Make this
accessible to Python as the function __subclasses__ which returns a
list of types -- we don't want Python programmers to be able to
manipulate the raw list.
In order to make this possible, I also had to add weak reference
support to type objects.
This will eventually be used together with a trap on attribute
assignment for dynamic classes for a major speed-up without losing the
dynamic properties of types: when a __foo__ method is added to a
class, the class and all its subclasses will get an appropriate tp_foo
slot function.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/object.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Include/object.h b/Include/object.h index e9eeb0e..8620766 100644 --- a/Include/object.h +++ b/Include/object.h @@ -289,6 +289,8 @@ typedef struct _typeobject { PyObject *tp_bases; PyObject *tp_mro; /* method resolution order */ PyObject *tp_defined; + PyObject *tp_subclasses; + PyObject *tp_weaklist; #ifdef COUNT_ALLOCS /* these must be last and never explicitly initialized */ |