在 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'>
MagicMock 是如何做到这一点的?当调用任何方法(可能未定义)时,如何创建一个可以执行操作的类?