我有一个课程在__init__
内进行一些健全性检查。如果其中一些失败,我想停止处理__init__
。
示例:
class MyClass(object):
def __init__(self, hostname, conn=None, user=None, passwd=None):
# SNIP (code to check if connection was supplied, if not user/pass)
if not conn.is_logged_in():
if not conn.Login():
raise LoginFailed("Failed to login to '%s'" % hostname)
return
# some code that relies on valid connection
如果我想在第一次完整性检查后停止处理,怎么办呢?我写的实际代码建立了与REST服务的连接,因此我的第一个完整性检查是测试提供的连接,或者,如果提供了用户名和密码,则在__init__()
中建立连接。 / p>
显然,如果连接失败,我不想执行依赖连接的后续任务。基本上我希望对象创建失败。
有什么建议吗?感谢。
答案 0 :(得分:1)
在C ++上,我们使用while break
。
在python中将是:
def __init__(self):
while True:
# Note that all the relevant code goes here. Inside the while
if not conn.is_logged_in():
if not conn.Login():
# raise LoginFailed("Failed to login to '%s'" % hostname)
break
答案 1 :(得分:0)
您可以使用sys.exit()
,尽管这会执行您的代码已经完成的工作。
你也可以从return
方法init
停止处理,这不会引发致命错误,但会停止该方法。