IronPythonを使ってみる

クラスの作成

前回一番最初に作成した空のFormを表示するスクリプトをクラスを使って作成します。

1. MyFormクラスの作成

同じ動きをする2つのファイルを比べると次のようになり、今回作成したクラスファイルの方が1.5倍ほど行数が増えています。

変更前:01_form.ipyファイル

import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
import System
from System.Windows.Forms import Form
from System.Drawing import Size

form = Form()
form.Size = Size(300,200)
form.Text = "Hello World!"

## main ##
System.Windows.Forms.Application.Run(form)

変更後:a01_formclass.ipyファイル

import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
import System
from System.Windows.Forms import Form
from System.Drawing import Size

class MyForm(Form):
  def __init__(self):
    self.Size = Size(300,200)
    self.Text = "Hello World!"
    pass

  def run(self):
    System.Windows.Forms.Application.Run(self)
  pass

## main ##
form = MyForm()
form.run()

このままでは書き方が冗長になっただけで、おもしろくありません。 初心者向けにはより短い方が好まれるため、入門書によく載っているのは短い方です。

1-1. 本体処理の簡略化

新しく作成したファイルの本体処理は2行に収まっています。 別々のファイルにするとライブラリの呼び出しが加わって3行程度が本体処理になるはずです。

まだ簡単な初期化を行なっているだけですが、ここからはアプリケーション固有の設定はクラス定義に押し込めて、イベントハンドラなど、軟性を確保したい定義は本体処理側で定義する方向を考えてみようと思います。

1-2. 今後の展開

スクリプトの規模が大きくなってくると、別ファイルにクラスを作成する方が効率が高まります。 この場合の効率は作成する際に手分けをするという意味だけではなくて、設計やテストをファイル単位で考える事で最終的には作り手の覚えておくべきことを整理できるという意味も含みます。

入門書を終えた状態だと、同じようなスクリプトのコピーに頼ってしまいがちです。 次からはクラスを別ファイルに書き出し、ライブラリとして扱うことで、扱いが楽になるものなのか様子を眺めてみようと思います。


Created: 2010-03-13, Last modified: 2010-03-19

2009,2010 © Yasuhiro ABE <yasu@yasundial.org>

Valid XHTML + RDFa RDFa it (RDF/XML)!

正当なCSSです!

Creative Commons License www.yasundial.org by Yasuhiro ABE is licensed under a Creative Commons Attribution 2.1 Japan License. Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.