如何在init中“终止”

时间:2014-12-04 15:29:07

标签: python python-2.7

我有一个课程在__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>

显然,如果连接失败,我不想执行依赖连接的后续任务。基本上我希望对象创建失败。

有什么建议吗?感谢。

2 个答案:

答案 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停止处理,这不会引发致命错误,但会停止该方法。