Temporary stop-gap fix for dynamic classes, so they pass the test.

XXX This is not sufficient: if a dynamic class has no __repr__ method
(for instance), but later one is added, that doesn't add a tp_repr
slot, so repr() doesn't call the __repr__ method.  To make this work,
I'll have to add default implementations of several slots to 'object'.

XXX Also, dynamic types currently only inherit slots from their
dominant base.
This commit is contained in:
Guido van Rossum 2001-08-12 03:43:35 +00:00
parent 9d4fe4298e
commit 8de8680d07
1 changed files with 6 additions and 1 deletions

View File

@ -1244,7 +1244,12 @@ PyType_Ready(PyTypeObject *type)
inherit_special(type, type->tp_base);
/* Initialize tp_dict properly */
if (!PyType_HasFeature(type, Py_TPFLAGS_DYNAMICTYPE)) {
if (PyType_HasFeature(type, Py_TPFLAGS_DYNAMICTYPE)) {
/* XXX This is not enough -- see checkin msg 2.30. */
if (type->tp_base != NULL)
inherit_slots(type, type->tp_base);
}
else {
/* For a static type, tp_dict is the consolidation
of the tp_defined of its bases in MRO. */
Py_DECREF(type->tp_dict);