Message328966
Customizing module attribute access example raises RecursionError:
>>> import sys
>>> from types import ModuleType
>>> class VerboseModule(ModuleType):
... def __repr__(self):
... return f'Verbose {self.__name__}'
... def __setattr__(self, attr, value):
... print(f'Setting {attr}...')
... setattr(self, attr, value)
...
>>> sys.modules[__name__].__class__ = VerboseModule
>>> sys.modules[__name__].a = 5
Setting a...
<...>
Setting a...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in __setattr__
File "<stdin>", line 6, in __setattr__
File "<stdin>", line 6, in __setattr__
[Previous line repeated 495 more times]
File "<stdin>", line 5, in __setattr__
RecursionError: maximum recursion depth exceeded while calling a Python object
Setting a...>>>
Something like this can fix it:
def __setattr__(self, attr, value):
... print(f'Setting {attr}...')
... super().setattr(self, attr, value) |
|
Date |
User |
Action |
Args |
2018-10-31 04:26:14 | denis-osipov | set | recipients:
+ denis-osipov, docs@python |
2018-10-31 04:26:14 | denis-osipov | set | messageid: <1540959974.35.0.788709270274.issue35119@psf.upfronthosting.co.za> |
2018-10-31 04:26:14 | denis-osipov | link | issue35119 messages |
2018-10-31 04:26:13 | denis-osipov | create | |
|