文档 implies that it's ok __new__(cls, ...)
返回类型不同于 cls
的对象。它说在那种情况下 __init__()
不会被调用。它没有明确说明,但常识或简单测试证实生成的对象不会具有 cls
类型。
为什么允许这种看似奇怪的行为?用例是什么?这显然是故意的。
最佳答案
当您为单元测试创建模拟对象时,它会很有用。
您可以更改 __new__
方法以在某些情况下返回具有相同接口(interface)的另一个对象,与原始对象相同(例如模拟原始类实例的行为),而无需修改其余代码。
关于python - __new__ 方法返回与其第一个参数类型不同的对象的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206124/