What is the equivalent of the C# “using” block in IronPython? – Stack Overflow
IronPython で using てか IDisposable が利用できたんだ。
知らなかった、てゆーか with, as って何だ?
私が買った Python の本にはこんなの書いていなかった気がするんだが。
Python 2.5 以降で使えるらしい、IronPython だけというわけでは無いようで。
やっぱり知っている人は少ないのか、もう少し調べてみよう。
__ext__ 指定だけだと例外になった、__enter__ と常に対にする必要あり。
試しに何か書いてみよう、と思ったけど IronPython で思いつかなかった(ぉい!
で、PyGtk の gtk.MessageDialog は destroy() メソッドを呼ぶ必要があるので
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/usr/bin/env python #-*- coding:utf-8 -*- import gtk class MessageBox(gtk.MessageDialog): def __init__( self , parent = None , flags = 0 , type = gtk.MESSAGE_INFO, buttons = gtk.BUTTONS_NONE, message_format = None ): gtk.MessageDialog.__init__( self , parent, flags, type , buttons, message_format) def __enter__( self ): #print 'enter' # debug return self def __exit__( self , * excinfo): #print 'exit %s' % repr(excinfo) # debug self .destroy() def messagebox(text): with MessageBox(buttons = gtk.BUTTONS_OK, message_format = text) as dlg: dlg.run() messagebox( "Test !" ) |
おぉ!確かにこれで解放処理を書かずに関数が使える。
でも try, finally のほうが解りやすいと思うんですけど…
組込みなら使うけど自分で書くかは少し微妙。