在python中__init__中返回None的错误表单

时间:2014-03-06 05:28:38

标签: python class coding-style initialization

我正在修补一些课程,我遇到了一个情况,我希望在它有机会再做任何事情之前切断__init__。为此,我只是在我想要切断的块的末尾添加一个空return语句。例如:

class Example(object):
    def __init__(self):
        #lots and lots of code
        if so_and_so:
            return

__init__内返回是不好的形式,即使它只是在这种情况下?

2 个答案:

答案 0 :(得分:4)

对于任何功能,不仅__init__,使用普通return等同于返回None,如果您未在函数中使用return,{{无论如何都会隐式返回1}}。

因此,在None内使用return完全没问题。

(上面规则的例外是生成器函数,在其中你只能使用__init__而不是return,所以这些在生成器函数中不相同。)

return None的中间返回将简单地切断对象的初始化。它不会阻止创建对象,也不会以任何方式中断程序的流程。

答案 1 :(得分:3)

一根绳子有多长?如果您不需要进一步初始化,那么继续没有意义。由于None无论如何都是隐式返回的(实际上应该是__init__()所返回的唯一的事物),如果初始化已经完成则很早就返回它。

OTOH,如果您需要中止初始化,那么您应该提出异常。