2009-01-01から1年間の記事一覧

プログラムの終了時にビープ音を

import atexit from winsound import * atexit.register(MessageBeep({引数})) #処理開始 でOK、ウィンドウズでは。 以下は私の環境で発せられる音。 引数 音 無し MB_OKに同じ -1 『単純なビープ音』(MB_OKと同じ) MB_OK 一般の警告音「コン!」 MB_ICONA…

メタプログラミングパターン (1) 特異メソッド

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 メタプログラミングパターン (1) 特異メソッド メタプログラミングパターン (2) メソッドの自動定義 メタプログラミングは動的…

メタプログラミングパターン (2) メソッドの自動定義

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 メタプログラミングパターン (1) 特異メソッド メタプログラミングパターン (2) メソッドの自動定義 メソッドを自動的に定義す…

contextmanager

内部DSLパターン でも書きましたが、Pythonでもwith文を使えば、Rubyのブロックと似たような事が出来ます。 しかし、with文コンテキストマネージャには、__enter__、__exit__メソッドを定義しなければならないのが面倒です。 そこで、contextlib.contextmana…

内部DSLパターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 内部DSLパターン (1) 内部DSLパターン (2) ブロック 今回は、内部DSL(ドメイン特化言語)パターンです。 前回のInterpreterパ…

内部DSLパターン (2) ブロック

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 内部DSLパターン (1) 内部DSLパターン (2) ブロック Rubyが内部DSLに向いている一つの理由は、ブロック構文の存在です。 Python…

どうしよう

Rubyによるデザインパターンが終わったら、書くことが無くなってしまう。

自然数とは何ぞや?

集合αが、自然数であるとは、αが順序数であり、任意のβ≦αは超限順序数ではないこと。 要するに、 0 = φ1 = {0} = {φ}2 = {0, 1} = {φ, {φ}}3 = {0, 1, 2} = {φ, {φ}, {φ, {φ}}} ・・・と、言うのを、先日のセミナーで勉強しました。 しかし、ラムダ計算を使…

Interpreterパターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Interpreterパターン (1) Interpreterパターン (2) ファイル検索用言語 Interpreterパターン (3) ASTを手に入れる 周知の通り、…

Interpreterパターン (2) ファイル検索用言語

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Interpreterパターン (1) Interpreterパターン (2) ファイル検索用言語 Interpreterパターン (3) ASTを手に入れる Interpreter…

Interpreterパターン (3) ASTを手に入れる

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Interpreterパターン (1) Interpreterパターン (2) ファイル検索用言語 Interpreterパターン (3) ASTを手に入れる Interpreter…

NotImplemented

raise NotImplementedError を間違えて、 raise NotImplemented と、書いたら、エラーになりました。 TypeError: exceptions must be classes or instances, not NotImplementedType NotImplementedとは、なんぞや?と、リファレンスを引いてみたところ・・…

Builderパターン(1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Builderパターン(2) ポリモーフィックなBuilder

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Builderパターン(3) Builderでオブジェクトの妥当性を保証する

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Builderパターン(4) Builderの再利用

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Pythonでマジックメソッド

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次前項でBuilderパターンについて書きましたが、 ComputerBuilderを作っても、まだ、 builder.set_turbo() builder.add_dvd() buil…

レシピ追加、特異メソッド

PythonRecipe の『015:特異メソッド』に、 ここに先日書いた記事『Pythonで特異メソッド』 の内容を書き加えました。 特に注意書きはなかったようだけど、勝手に書き込んだりしてよかったのかな? 追記:fgshunさんによると、一見さんも歓迎だそうです

Factoryパターン(1) - Factory Method

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Factoryパターン(1) - Factory Method Factoryパターン(2) - 引数にクラスを渡すFactory Method Factoryパターン(3) - Abstract…

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

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Factoryパターン(1) - Factory Method Factoryパターン(2) - 引数にクラスを渡すFactory Method Factoryパターン(3) - Abstract…

Factoryパターン(3) - Abstract Factory

Factoryパターン(1) - Factory Method Factoryパターン(2) - 引数にクラスを渡すFactory Method Factoryパターン(3) - Abstract Factory Factoryパターン(4) - 引数にクラスを渡すAbstract Factory Template MethodパターンをStrategyパターンに書き換えられ…

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の方法 クラスはインスタンスの生成装置だと言えます。そしてク…