2009-07-01から1ヶ月間の記事一覧

Factoryパターン(4) - 引数にクラスを渡すAbstract Factory

Factoryパターン(1) - Factory Method Factoryパターン(2) - 引数にクラスを渡すFactory Method Factoryパターン(3) - Abstract Factory Factoryパターン(4) - 引数にクラスを渡すAbstract Factory 前回、Abstract Factroyクラスを作りました。こんどは、そ…

Python関連リンク集

Python Programming Language -- Official Website まずはこのサイトのDownloadから、 Python2.6(2009/06/26現在)をダウンロード Pythonドキュメント翻訳プロジェクト リファレンスには、CHM形式が関数名から検索できるので便利です。 Pythonチュートリア…

Decoratorパターン

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Strategyパターンでは、他のオブジェクトに委譲する事で、アルゴリズムを動的に変更することをしました。たとえば、HTMLを出力…

ちょっと黒い自動委譲

ところで、自動委譲と__getattr__の方法1・方法2にはちょっとした欠陥があります。 w = WriterDecorator1(SimpleWriter("test.txt")) print(w.writeline) # &#061;> <bound method SimpleWriter.writeline of <SimpleWriter object at 0x00B008B0>> WriterDecorator1のメソッドのはずなのに、SimpleWriterのメソッドの名前が表示されて</bound>…

Singletonパターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Singletonパターン (1) Singletonパターン (2) - ぜ〜んぶクラスメソッド Singletonパターン (3) - モジュール Singletonパター…

Singletonパターン (2) - ぜ〜んぶクラスメソッド

Singletonパターン (1) Singletonパターン (2) - ぜ〜んぶクラスメソッド Singletonパターン (3) - モジュール Singletonパターン (4) - メタクラスを使った方法 Singletonパターン (5) - Borgの方法 Pythonにはクラスメソッドがあります。クラスメソッドは…

Singletonパターン (3) - モジュール

Singletonパターン (1) Singletonパターン (2) - ぜ〜んぶクラスメソッド Singletonパターン (3) - モジュール Singletonパターン (4) - メタクラスを使った方法 Singletonパターン (5) - Borgの方法 実はPythonには、どんなクラスも簡単にSingleton化する方…

Singletonパターン (5) - Borgの方法

Singletonパターン (1) Singletonパターン (2) - ぜ〜んぶクラスメソッド Singletonパターン (3) - モジュール Singletonパターン (4) - メタクラスを使った方法 Singletonパターン (5) - Borgの方法 Singletonにはサブクラス化したとき、 各サブクラス毎に…

Singletonパターン (4) - メタクラスを使った方法

Singletonパターン (1) Singletonパターン (2) - ぜ〜んぶクラスメソッド Singletonパターン (3) - モジュール Singletonパターン (4) - メタクラスを使った方法 Singletonパターン (5) - Borgの方法 クラスはインスタンスの生成装置だと言えます。そしてク…

Adapterパターン

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。 目次 かなりいい加減です。 アダプターというのは、たとえばUSB-PS2変換器の様に、インターフェイスのギャップを埋めるためのもので…

自動委譲と__getattr__

Decoratorパターンの項でも書きましたが、「メンバのメソッドに丸投げするメソッド」をしばしば書く必要が出てきます。 class WriterDecorator(object): #以下のメソッドは単にwriterに丸投げ def writeline(self, line): return self.writer.writeline(line…

Pythonでmultimap(値が複数ある辞書)

先日、M.U.G.E.N のstファイルというものを取り扱うソフトを作りました。stファイルはiniファイルに似ているのですが、たま〜〜〜〜〜〜に、同じキーに複数回値が設定される事があります。 [state 900] type = varset var(10) == 20 var(11) == 30 var(15) =…

Pythonで特異メソッド

メソッドは普通class文の中で定義して、そのクラスのインスタンスはみんな同じメソッドを共有するものですが、特定のインスタンスだけための特注品のメソッドを、特異メソッドと言います。Rubyには特異メソッドのための構文がありますが、Pythonにはありませ…

Proxyパターン (1) - アクセス制御Proxy

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Proxyパターン (1) - アクセス制御Proxy Proxyパターン (2) - リモートProxy Proxyパターン (3) - 仮想Proxy オブジェクトへの…

Proxyパターン (2) - リモートProxy

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Proxyパターン (1) - アクセス制御Proxy Proxyパターン (2) - リモートProxy Proxyパターン (3) - 仮想Proxy 次に、実際の銀行…

Proxyパターン (3) - 仮想Proxy

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Proxyパターン (1) - アクセス制御Proxy Proxyパターン (2) - リモートProxy Proxyパターン (3) - 仮想Proxy 最後に、オブジェ…

日曜プログラマの最大の敵は何か!?

3ヶ月前の自分だぁ!

クラスに後からメソッドを追加

関数を作って、クラスにsetattrすればいいだけです。 Pythonではメソッドと関数はほとんど同じものです。クラスの中にある関数がメソッドであると考えてよさそうです。 setattrでクラスの中に突っ込むと、途端にただの関数からメソッドに突然、変身します。 …

Commandパターン

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。 目次 新しいGUIフレームワークを作っているとします。ボタンが押されたとき、何かのタスク(ビープ音を鳴らす、メールの送信、ファ…