diff options
| author | Damien George | 2014-05-11 12:10:35 +0100 |
|---|---|---|
| committer | Damien George | 2014-05-11 12:10:35 +0100 |
| commit | 18ceb7055b43d158e46ff6d0a0389bc3cd05e5d5 (patch) | |
| tree | f3b1ad5d9c242a8aec5c0dc58b876e6f57529f05 /py/objtype.c | |
| parent | a7a1a38df43958a267410d333f495db56a8b0902 (diff) | |
| parent | eea01186547f0f1568ea1c8f002da4e33b7b0e46 (diff) | |
Merge branch 'master' of github.com:micropython/micropython
Diffstat (limited to 'py/objtype.c')
| -rw-r--r-- | py/objtype.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/py/objtype.c b/py/objtype.c index 345eee714..c579477db 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; @@ -842,6 +845,15 @@ STATIC mp_obj_t mp_builtin_isinstance(mp_obj_t object, mp_obj_t classinfo) { MP_DEFINE_CONST_FUN_OBJ_2(mp_builtin_isinstance_obj, mp_builtin_isinstance); +mp_obj_t mp_instance_cast_to_native_base(mp_const_obj_t self_in, mp_const_obj_t native_type) { + mp_obj_type_t *self_type = mp_obj_get_type(self_in); + if (!mp_obj_is_subclass_fast(self_type, native_type)) { + return MP_OBJ_NULL; + } + mp_obj_instance_t *self = (mp_obj_instance_t*)self_in; + return self->subobj[0]; +} + /******************************************************************************/ // staticmethod and classmethod types (probably should go in a different file) |
