代码之家  ›  专栏  ›  技术社区  ›  max

没有新的可以退货吗?

  •  6
  • max  · 技术社区  · 14 年前

    一般来说,不从 __new__ 方法如果类的用户知道有时构造函数的计算结果为“无”?

    文档并不意味着它是非法的,而且我没有看到任何立即的问题(因为 __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)
    
    2 回复  |  直到 14 年前
        1
  •  7
  •   Alex Martelli    14 年前

    这不是非法的。如果对结果没有任何奇怪的处理,它将起作用。

        2
  •  3
  •   Glenn Maynard    14 年前

    你应该避免这样。文档并没有详尽列出你不应该做的事情,但是它说明了 __new__ 应该 do:返回类的实例。

    如果在某些情况下不想返回新对象,请引发异常。