日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

JavaScriptを有効にし、Cookieを受け入れ、以下のブラウザを使うことで完全なコンテンツが楽しめます。
Mozilla Firefox 3.0(Get Firefox)・Opera 9.6・Safari 3.2・Lunascape 4/5(Gecko)・Lunascape 5(WebKit)
Internet Explorer 7/8とそれを使うIEコンポーネントブラウザ(Lunascape・Sleipnirなど)

Python式オブジェクト指向は便利

最近IronPythonでものづくりに励んでるわけだが、
まぁこういうのやってるとLLにおける、オブジェクト指向がわかってくる。
LLというのは、軽量プログラミング言語の意味ね。
ただ値の束がほしければ、リストとかタプルとか辞書とか使えばOKなのよね。
けど、大量の値の束ばっかりあっても困るときがあると。
そういうとき便利ですねということです。
Perlではあんまりオブジェクト指向使いやすくないから使ってなかったが、
Pythonはすごく簡単。だから大量生産したくなる。
IronPythonでWindowsフォームの開発をしてるのだが、
AというボタンのクリックイベントにBというウインドウを開く、
CというボタンのクリックイベントにDというウインドウを開く…
というのを延々を定義するのは無理。
これには2つ考えがあって、ボタンに開くウインドウのオブジェクトを登録しておいて、
そのボタンのクリックについて、全部に登録されたウインドウを開くとしておく。
もう1つはウインドウのオブジェクトを作って、それを開くという動作を1つ1つ登録する。
こうすればさっきのようなとんでもないことにならなくて済む。
まぁこれしようとすると、ボタンかウインドウのクラスを継承せないかんからめんどくさいけどね。
しかしPythonではその程度なら数行で書ける。
class opentest(System.Windows.Forms.Form):
def __init__(self,id):
self.Text="ID:%d"%id
def open(self,sender,e):
self.ShowDialog()
まぁ実際のは、コンストラクタである__init__でフォームの形状とか詳しく定義してるけど、
さっきいいたかったことはこれで実現できてますね。
ところで、何も継承しないでクラス作るときはどうするでしょうか。
答えは class foo(object): と書く。詳しく知らんのだがobjectがないと意味が変わってくるらしい。
これで、こういう風にすればいいと。
myrnd=System.Random()
for x in range(10):
for y in range(10):
button=System.Windows.Forms.Button()
button.Size=System.Drawing.Size(20,20)
button.Location=System.Drawing.Point(20*x,20*y)
button.Click+=opentest(myrnd.Next(100)).open
form.Controls.Add(button)
本当はPythonのrandomでやりたかったが、うまくいかんので.NETので。
こんなシンプルなコードでいけるんですね。
まぁいろいろな使い道があるだろうが、
なかなか慣れないので、そこまで活用できてるわけでもない。
考える暇があれば、ベタ書きでもソース書くからね。
そこから発見するものもあると。
まずは、WIndowsフォームのイベント周辺で活用してみてます。
こいつはさっき言った事情でベタ書きがほとんど通用しないので…
そうやってやっていくと、これは便利そうだと思えてきたものです。
まぁ騙されたと思ってやってみればよろしいということです。
Author : hidemaro
Date : 2008/10/28(Tue) 22:40
Perl・PHP・Ruby・Python | Comment | trackback (0)

Tools