python 作用with_即使__init__方法有效,Python中的With语句仍返...
對于具有以下init方法的數據庫類:
class DB:
def __init__(self, dbprops):
self.dbprops = dbprops
self.conn = self.get_connection(self.dbprops)
debug("self.conn is %s" %self.conn)
def __enter__(self):
pass
def __exit__(self, exc_type, exc_val, exc_tb):
if not self.conn is None:
self.close()
對于調用它的客戶端方法,如下所示:
with DB(self.dbprops) as db:
if not db:
raise Exception("Db is None inside with")
return db.get_cmdline_sql()
輸出顯示調試消息-因此成功調用了init方法:
File "./classifier_wf.py", line 28, in get_cmdline_mysql
raise Exception("Db is None inside with")
例外:Db在里面是None
更新:修復了enter方法以返回數據庫對象的問題.但是需要有關如何調用它的幫助:
def __enter__(self, dbprops):
return DB(dbprops)
用單個參數調用它顯然不起作用:
with DB(dbprops) as db:
TypeError: __enter__() takes exactly 2 arguments (1 given)
現在,我不再關注,因為應該自動填寫“自我”.
總結
以上是生活随笔為你收集整理的python 作用with_即使__init__方法有效,Python中的With语句仍返...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python close_wait_线上
- 下一篇: python获取数据库的存储过程_pyt