我正在修补一些课程,我遇到了一个情况,我希望在它有机会再做任何事情之前切断__init__
。为此,我只是在我想要切断的块的末尾添加一个空return
语句。例如:
class Example(object):
def __init__(self):
#lots and lots of code
if so_and_so:
return
在__init__
内返回是不好的形式,即使它只是在这种情况下?
答案 0 :(得分:4)
对于任何功能,不仅__init__
,使用普通return
等同于返回None
,如果您未在函数中使用return
,{{无论如何都会隐式返回1}}。
因此,在None
内使用return
完全没问题。
(上面规则的例外是生成器函数,在其中你只能使用__init__
而不是return
,所以这些在生成器函数中不相同。)
在return None
的中间返回将简单地切断对象的初始化。它不会阻止创建对象,也不会以任何方式中断程序的流程。
答案 1 :(得分:3)
一根绳子有多长?如果您不需要进一步初始化,那么继续没有意义。由于None
无论如何都是隐式返回的(实际上应该是__init__()
所返回的唯一的事物),如果初始化已经完成则很早就返回它。
OTOH,如果您需要中止初始化,那么您应该提出异常。