Безопасно ли изменять / удалять метод __dunder__ из существующего объекта класса? - PullRequest
3 голосов
/ 03 апреля 2019

Я имею в виду сумасшедший ленивый хакерский взлом, когда хук datamodel должен быть удален из типа во время выполнения (влияет на все экземпляры). Это работает правильно / как и ожидалось:

>>> class Crazy: 
...     def __getattr__(self, attr): 
...         del Crazy.__getattr__ 
...         return 'world' 
... 
>>> c = Crazy() 
>>> c.hello 
'world'
>>> c.hello 
AttributeError: 'Crazy' object has no attribute 'hello'

Я вспоминаю, что разрешение имен dunder'а, подключенных к экземпляру , невозможно в Python, но я не уверен, есть ли какие-либо подводные камни при динамическом изменении имен dunder типа .

Это поведение гарантировано / надежно в Python?

...