diff options
author | Anson Mansfield <amansfield@mantaro.com> | 2024-07-19 13:01:09 -0400 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2025-07-29 09:41:10 +1000 |
commit | 82db5c81e027f6ad305a43ec3c90a13ba319e3b4 (patch) | |
tree | 2f5ca384e0cecc78cfdacb39ec9ab1d054393c91 /tests/basics/class_descriptor.py | |
parent | 3a72f95919323d7a36cb3d153d92de90d64853a1 (diff) |
tests/basics: Add tests for PEP487 __set_name__.
Including the stochastic tests needed to guarantee sensitivity to the
potential iterate-while-modifying hazard a naive implementation might have.
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
Diffstat (limited to 'tests/basics/class_descriptor.py')
-rw-r--r-- | tests/basics/class_descriptor.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/tests/basics/class_descriptor.py b/tests/basics/class_descriptor.py index 83d316743..feaed2fbb 100644 --- a/tests/basics/class_descriptor.py +++ b/tests/basics/class_descriptor.py @@ -1,22 +1,28 @@ class Descriptor: def __get__(self, obj, cls): - print('get') + print("get") print(type(obj) is Main) print(cls is Main) - return 'result' + return "result" def __set__(self, obj, val): - print('set') + print("set") print(type(obj) is Main) print(val) def __delete__(self, obj): - print('delete') + print("delete") print(type(obj) is Main) + def __set_name__(self, owner, name): + print("set_name", name) + print(owner.__name__ == "Main") + + class Main: Forward = Descriptor() + m = Main() try: m.__class__ @@ -26,15 +32,15 @@ except AttributeError: raise SystemExit r = m.Forward -if 'Descriptor' in repr(r.__class__): +if "Descriptor" in repr(r.__class__): # Target doesn't support descriptors. - print('SKIP') + print("SKIP") raise SystemExit # Test assignment and deletion. print(r) -m.Forward = 'a' +m.Forward = "a" del m.Forward # Test that lookup of descriptors like __get__ are not passed into __getattr__. |