在Python中,如果调用一个不存在的方法,它会抛出AttributeError错误。例如:
>>> class A:
... def yo(self):
... print(1)
...
>>> a = A()
>>> a.yo()
1
>>> a.hello()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'hello'
在下面的代码中,MagicMock类没有名为hello的函数或未为hello方法创建补丁。尽管如此,下面的代码不会抛出AttributeError错误。
>>> from unittest.mock import MagicMock
>>> obj = MagicMock()
>>> obj.hello()
<MagicMock name='mock.hello()' id='4408758568'>
MagickMock是如何做到这一点的?我该如何创建一个类,在任何方法(可能未定义)被调用时都可以执行操作?