__new__方法返回与第一个arg不同类型的对象的用例是什么?

max*_*max 9 python constructor class object

文档意味着它的确定__new__(cls, ...)返回比不同类型的对象cls.它说在那种情况下__init__()不会被调用.它没有明确说明,但常识或简单的测试确认了对象的结果不会有类型cls.

为什么允许这种看似奇怪的行为?用例是什么?这显然是故意的.

Raf*_*cki 5

在为单元测试创​​建模拟对象时,它可能很有用.

您可以将__new__方法更改为在某些情况下返回具有相同接口的另一个对象(如模拟原始类实例的行为),而不修改其余代码.

  • 整齐.这是一个简洁的用例. (2认同)