Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理异常后从类中退出python_Python - Fatal编程技术网

处理异常后从类中退出python

处理异常后从类中退出python,python,Python,我有一门课,像: class TestClass(object): def __init__(self, *args): try: ## check some condition except: return ## Should exit class def do_something_else(self): ... def return_somet

我有一门课,像:

class TestClass(object):
    def __init__(self, *args):
        try:
            ##  check some condition
        except:
            return
            ## Should exit class

    def do_something_else(self):
        ...

    def return_something(self):
        ##  return something
TestClass(arg1, arg2, ..).do_something_else()
somthing = TestClass(arg1, arg2, ..).return_something()
现在我试着这样称呼这个班:

class TestClass(object):
    def __init__(self, *args):
        try:
            ##  check some condition
        except:
            return
            ## Should exit class

    def do_something_else(self):
        ...

    def return_something(self):
        ##  return something
TestClass(arg1, arg2, ..).do_something_else()
somthing = TestClass(arg1, arg2, ..).return_something()
当我执行第一个命令时,我的条件失败并引发异常。 我想要的是,如果在uuu init uuu函数中发生异常,则不应调用dou something方法,并且控制流应转到第二个命令

在第二个命令中,满足所有条件,并且应该调用return_something函数


我怎样才能做到这一点呢?

也许我错了,但我还是简单一点,使用一个标志变量,这样做:

class TestClass(object):
    def __init__(self, *args):
        self.flag=False
        try:
            ##  check some condition
        except:
            self.flag=True

    def do_something_else(self):
        if self.flag:
            #do what you want, e.g. call a second command
            return
        ...

    def return_something(self):
        ##  return something

您只需创建TestClass类的对象,并从try块返回True,从except块返回False。检查该值是否为True或Flase,并执行所需的函数。
创建一个对象将自动triiger init方法,并根据您的条件返回true或false。检查返回的值以决定是否执行所需的方法。

我建议您在单独的函数中而不是在构造函数中处理异常情况

而不是

TestClass(arg1, arg2, ..).do_something_else()

并从init方法中删除try/except语句。
.

这听起来像是一个错误。你没有退出一个类——你到底想做什么?我有一个分布式任务队列芹菜,在其中调用这个函数。我想最小化芹菜中的错误日志,并将错误存储在数据库日志中。这就是为什么在初始化类时,如果不满足条件,我希望将错误详细信息存储在数据库日志中并退出该类。有些方法返回数据,而有些方法只处理其他数据。否则,我会从uu init uuu函数调用函数。不清楚你的意思。此外,init必须始终返回None。我的答案与本文中的第一个答案有些相似。但我不确定init是否必须始终返回“None”。先生,你能再澄清一点吗?