Override list's builtins dynamically in class scope
问题 Purely curiosity question: class Li(list): pass m, n= Li([1]), Li([2]) def r(*args, **kwargs): raise Exception('hop') setattr(m, '__iadd__', r) m += n print m # [1, 2] setattr(Li, '__iadd__', r) m += n Output: [1, 2] Traceback (most recent call last): File "C:\...\test_override.py", line 8, in <module> m+=n File "C:\...\test_override.py", line 3, in r def r(*args, **kwargs): raise Exception('hop') Exception: hop If I use setattr(m, 'append', r) then m.append(2) will fail. So is __iadd__