通常,如果类的用户知道有时构造函数将评估为None,那么从__new__
方法返回None是否合理?
文档并不意味着它是非法的,我没有看到任何直接的问题(因为__init__
不会被调用,所以不是自定义类的实例!)。但我很担心
具体示例:
class MyNumber(int):
def __new__(cls, value): # value is a string (usually) parsed from a file
if value == 'N.A.':
return None
return int.__new__(cls, value)
答案 0 :(得分:7)
这不违法。如果对结果没有做任何奇怪的事情,它就会起作用。
答案 1 :(得分:3)
你应该避免这种情况。文档没有详尽地列出你不应该做的事情,但它说明了__new__
应该做什么:返回类的实例。
如果您不想在某些情况下返回新对象,请引发异常。