玩蛇网提供最新Python编程技术信息以及Python资源下载!

请问Python可以终止对象实例化进程呢?


如图,这是一个类的部分定义,我的问题是如果try中的语句执行失败之后能否终止对象的实例化过程,然后返回错误,因为如果不能终止的话,那么程序在执行了except的语句过后,会继续执行之后的语句,即继续实例化其它的方法,这时候就会在中途报错,即使我在另一个文件里这样调用,程序也会在类的定义里的self.conn.close()位置处报错,提示self.conn未定义
所以请问,Python怎样才能终止对象的实例化过程呢,其它面向对象的语言是不是也有类似的功能

**        import ConnectSQL
    try:
        self.Login = ConnectSQL.ConnectSQL()
    except:
        print '网络无法连接'**

我觉得连接数据库这个操作最好能单独列出一个函数类似这样,没有必要去终止对象的实例化

class ConnectSQL():
    def __init__(self):
        self.conn = None
        ...
    def connect_db(...):
        #连接数据库操作

    def close_connect():
        if self.conn:
            self.conn.close()

有两种方案:

class Connection(object):
    def __init__(self,*args,**kwargs)
        pass
    def __enter__(self):
        pass
    def __exit__(self,exc_type, exc_value, traceback):
        pass
with Connnection() as con:    
    pass

或者:@contextmanager
用法类似于 with xxx as x:pass
注意如果要确定一定要终止类里面的实例,采用__del__进行垃圾回收。

class Connection(object):
    def __init__(self,*args,)
        self.con= ConnectSQL.Con(*args,)
    def close(self):
        self.con.close()
    def __del__(self):
        self.con.close()

最好抛个异常出去,连接不上直接中断

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19578.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月24日 - 20时07分28秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules