阅 读 文 章

Py 2.5 what's new 之 with

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(shhgs) | 时间:2007-05-27 | 浏览:人次 ]




class DatabaseConnection:
   # Database interface
   def cursor (self):
       "Returns a cursor object and starts a new transaction"
   def commit (self):
       "Commits current transaction"
   def rollback (self):
       "Rolls back current transaction"

The __enter__() method is pretty easy, having only to start a new transaction.
For this application the resulting cursor object would be a useful result,
so the method will return it. The user can then add as cursor to their 'with'
statement to bind the cursor to a variable name.

__enter__()方法相当简单,只需要启动一个transaction就行了。对application来说,
cursor 对象会用得着,所以 __enter__() 得把它返回出去。这样用户就能在with语句里用cursor了。

class DatabaseConnection:
   ...
   def __enter__ (self):
       # Code to start a new transaction
       cursor = self.cursor()
       return cursor

The __exit__() method is the most complicated
because it's where most of the work has to be done.
The method has to check if an exception occurred.
If there was no exception, the transaction is committed.
The transaction is rolled back if there was an exception.

__exit__()最烦了,因为绝大多数的工作都是在这里干的。
它得检查是不是有异常。如果没有,它得负责commit,如果有它得roll back。

In the code below, execution will just fall off the end of the function,
returning the default value of None. None is false, so the exception will
be re-raised automatically. If you wished, you could be more explicit and
add a return statement at the marked location.

在下面这段代码里,真正重要的东西是函数的最后部分,返回一个None。None是false值,
所以异常会被重新抛出来。如果你想明确一下,可以在我注释的地方加一个return语句。

class DatabaseConnection:
   ...
   def __exit__ (self, type, value, tb):
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: with 一个 对象 语句 这个 方法 异常 如果 可以 返回

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.