擅长:python、mysql、java
<p>正如错误所告诉您的那样,您不能monkeypatch用C实现的许多扩展类型的属性(其他Python实现可能有不同于CPython的规则,但它们通常具有类似的限制)</p>
<p>解决这个问题的方法是创建一个子类,然后monkeypatch<em>类</em>。在</p>
<p>例如(未经测试,因为我手头没有<code>pytest</code>但它可以与手动monkeypatching一起工作):</p>
<pre><code>class patched_datetime(datetime.datetime): pass
monkeypatch.setattr(patched_datetime, "now", nowfunc)
datetime.datetime = patched_datetime
</code></pre>