diff options
author | Damien George <damien.p.george@gmail.com> | 2018-10-18 12:15:16 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-10-18 12:15:16 +1100 |
commit | 7eb29c200077096a4c6afc2679b35d70068de89d (patch) | |
tree | e7aa3ace0200cec6d235a92d87ae4535b87e4042 /tests/basics/getattr.py | |
parent | 4904663748a480608797fa5e22285f601bbecfff (diff) |
py/objtype: Remove comment about catching exc from user __getattr__.
Any exception raised in a user __getattr__ should be propagated out. A
test is added to verify these semantics.
Diffstat (limited to 'tests/basics/getattr.py')
-rw-r--r-- | tests/basics/getattr.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/basics/getattr.py b/tests/basics/getattr.py index a021e38fb..2257da3bf 100644 --- a/tests/basics/getattr.py +++ b/tests/basics/getattr.py @@ -9,3 +9,20 @@ class A: a = A({'a':1, 'b':2}) print(a.a, a.b) + +# test that any exception raised in __getattr__ propagates out +class A: + def __getattr__(self, attr): + if attr == "value": + raise ValueError(123) + else: + raise AttributeError(456) +a = A() +try: + a.value +except ValueError as er: + print(er) +try: + a.attr +except AttributeError as er: + print(er) |