可以从__new__返回None吗?

max*_*max 7 python new-operator

通常,__new__如果类的用户知道有时构造函数将评估为None,那么从方法返回None是否合理?

文档并不意味着它是非法的,我没有看到任何直接的问题(因为__init__不会被调用,没有不是有问题的自定义类的实例!).但我很担心

  1. 是否可能有其他不可预见的问题
  2. 构造函数返回None是否是一个很好的编程习惯

具体例子:

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)
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 7

这不违法.如果对结果没有做任何奇怪的事情,它就会起作用.