怎样重载Python对象的生成过程,失败就返回None?

善良超锅锅 2015-07-18 10:37:29
我想用一个对象来管理远程数据库的连接。创建连接,给出查询和更新数据的接口。最重要的是能自动关闭连接。

假设类名为DB.
连接操作放在__init__方法中。
关闭连接我放在__del__方法中实现。

但是我想在创建连接不成功时 db = DB()可以返回None。这个该怎么实现?如果再在此基础上实现单例模式该怎么做?

希望各位能说一下,有伪代码就更好了。
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
善良超锅锅 2015-07-23
  • 打赏
  • 举报
回复
我问的不是单例模式,而是怎样在创建对象时如果不满足条件就返回None
善良超锅锅 2015-07-18
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
try except 一下 单例的话可以用工厂或者只暴漏一个实例试试
你的意思是try except 在except代码中返回None吗? 可是执行__init__时对象已经创建好了
善良超锅锅 2015-07-18
  • 打赏
  • 举报
回复
[quote=引用 1 楼 zzgzzg00 的回复:] try except 一下 单例的话可以用工厂或者只暴漏一个实例试试 你的意思是try except 在except代码中返回None吗?
似梦飞花 2015-07-18
  • 打赏
  • 举报
回复
try except 一下 单例的话可以用工厂或者只暴漏一个实例试试

class Test(object):
    def __init__(self):
        print('new instance')
class TestFactory(object):
    def __init__(self):
        self.__instance=None
    def createInstance(self):
        if not self.__instance:
            self.__instance=Test()
        return self.__instance
d=TestFactory()
d.createInstance()
d.createInstance()
似梦飞花 2015-07-18
  • 打赏
  • 举报
回复
这样第一次某种原因失败了 在调用createInstance会再次去创建
似梦飞花 2015-07-18
  • 打赏
  • 举报
回复
class Test(object):
    def __init__(self):
        raise Exception('error')

class TestFactory(object):
    def __init__(self):
        self.instance=None
    def createInstance(self):
        try:
            if not self.instance:
                self.instance=Test()
        except:
            self.instance=None
        return self.instance

factory=TestFactory()
d=factory.createInstance()
print(d)
我是想着在工厂里捕获一下

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧