Skip to content

Commit f65fe66

Browse files
Make __mro__ a getter.
1 parent 8f8b60b commit f65fe66

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

Objects/typeobject.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,6 @@ static PyMemberDef type_members[] = {
632632
{"__base__", T_OBJECT, offsetof(PyTypeObject, tp_base), READONLY},
633633
{"__dictoffset__", T_PYSSIZET,
634634
offsetof(PyTypeObject, tp_dictoffset), READONLY},
635-
{"__mro__", T_OBJECT, offsetof(PyTypeObject, tp_mro), READONLY},
636635
{0}
637636
};
638637

@@ -876,6 +875,12 @@ clear_mro(PyTypeObject *type)
876875
Py_CLEAR(type->tp_mro);
877876
}
878877

878+
static PyObject *
879+
type_get_mro(PyTypeObject *type, void *context)
880+
{
881+
return Py_NewRef(get_mro(type));
882+
}
883+
879884
static PyTypeObject *best_base(PyObject *);
880885
static int mro_internal(PyTypeObject *, PyObject **);
881886
static int type_is_subtype_base_chain(PyTypeObject *, PyTypeObject *);
@@ -1249,6 +1254,7 @@ static PyGetSetDef type_getsets[] = {
12491254
{"__name__", (getter)type_name, (setter)type_set_name, NULL},
12501255
{"__qualname__", (getter)type_qualname, (setter)type_set_qualname, NULL},
12511256
{"__bases__", (getter)type_get_bases, (setter)type_set_bases, NULL},
1257+
{"__mro__", (getter)type_get_mro, NULL, NULL},
12521258
{"__module__", (getter)type_module, (setter)type_set_module, NULL},
12531259
{"__abstractmethods__", (getter)type_abstractmethods,
12541260
(setter)type_set_abstractmethods, NULL},

0 commit comments

Comments
 (0)