summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-01-08 17:48:44 +0000
committerDamien George <damien.p.george@gmail.com>2015-01-08 17:48:44 +0000
commitc33ecb83ba4bc388cd773eec827dc0b85505dce7 (patch)
treeeaeaea4bc4fd868808df84fad55812866b32b6ab
parent5b7aa294e02c792984750546ca118eeb7ba48b59 (diff)
downloadmicropython-c33ecb83ba4bc388cd773eec827dc0b85505dce7.tar.gz
micropython-c33ecb83ba4bc388cd773eec827dc0b85505dce7.zip
tests: Add test for when instance member overrides class member.
-rw-r--r--py/objtype.c2
-rw-r--r--tests/basics/class_instance_override.py10
2 files changed, 11 insertions, 1 deletions
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())