diff options
Diffstat (limited to 'py')
-rw-r--r-- | py/objtype.c | 3 | ||||
-rw-r--r-- | py/runtime.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/py/objtype.c b/py/objtype.c index 345eee714..ef5f6b9d9 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -333,6 +333,9 @@ STATIC void instance_convert_return_attr(mp_obj_t self, mp_obj_t member, mp_obj_ // return a bound method, with self being the type of this object dest[0] = ((mp_obj_static_class_method_t*)member)->fun; dest[1] = mp_obj_get_type(self); + } else if (MP_OBJ_IS_TYPE(member, &mp_type_type)) { + // Don't try to bind types + dest[0] = member; } else if (mp_obj_is_callable(member)) { // return a bound method, with self being this object dest[0] = member; diff --git a/py/runtime.c b/py/runtime.c index 1479d8cba..a2de2d75b 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -840,6 +840,9 @@ void mp_load_method_maybe(mp_obj_t base, qstr attr, mp_obj_t *dest) { // return a bound method, with self being the type of this object dest[0] = ((mp_obj_static_class_method_t*)elem->value)->fun; dest[1] = mp_obj_get_type(base); + } else if (MP_OBJ_IS_TYPE(elem->value, &mp_type_type)) { + // Don't try to bind types + dest[0] = elem->value; } else if (mp_obj_is_callable(elem->value)) { // return a bound method, with self being this object dest[0] = elem->value; |