From dfeaea144168c3ec3b4ec513cfb201ce93f99f5e Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 25 May 2018 10:59:40 +1000 Subject: [PATCH] py/objtype: Remove TODO comment about needing to check for property. Instance members are always treated as values, even if they are properties. A test is added to show this is the case. --- py/objtype.c | 1 - tests/basics/builtin_property.py | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/py/objtype.c b/py/objtype.c index 7df349ce9b..2ec27c762c 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -562,7 +562,6 @@ STATIC void mp_obj_instance_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *des mp_map_elem_t *elem = mp_map_lookup(&self->members, MP_OBJ_NEW_QSTR(attr), MP_MAP_LOOKUP); if (elem != NULL) { // object member, always treated as a value - // TODO should we check for properties? dest[0] = elem->value; return; } diff --git a/tests/basics/builtin_property.py b/tests/basics/builtin_property.py index 89c3d49364..4b08ee9d3b 100644 --- a/tests/basics/builtin_property.py +++ b/tests/basics/builtin_property.py @@ -105,3 +105,9 @@ class E: # not tested for because the other keyword arguments are not accepted # q = property(fget=lambda self: 21, doc="Half the truth.") print(E().p) + +# a property as an instance member should not be delegated to +class F: + def __init__(self): + self.prop_member = property() +print(type(F().prop_member))