From c33ecb83ba4bc388cd773eec827dc0b85505dce7 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 8 Jan 2015 17:48:44 +0000 Subject: [PATCH] tests: Add test for when instance member overrides class member. --- py/objtype.c | 2 +- tests/basics/class_instance_override.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/basics/class_instance_override.py diff --git a/py/objtype.c b/py/objtype.c index 01a1658236..ec616e355e 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -457,7 +457,7 @@ STATIC mp_obj_t instance_binary_op(mp_uint_t op, mp_obj_t lhs_in, mp_obj_t rhs_i } void mp_obj_instance_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) { - // logic: look in obj members then class locals (TODO check this against CPython) + // logic: look in instance members then class locals assert(is_instance_type(mp_obj_get_type(self_in))); mp_obj_instance_t *self = self_in; diff --git a/tests/basics/class_instance_override.py b/tests/basics/class_instance_override.py new file mode 100644 index 0000000000..6afbcd9428 --- /dev/null +++ b/tests/basics/class_instance_override.py @@ -0,0 +1,10 @@ +# test that we can override a class method with an instance method + +class A: + def foo(self): + return 1 + +a = A() +print(a.foo()) +a.foo = lambda:2 +print(a.foo())