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

list.sort : sorted random.shuffle : shuffled?

配列のシャッフル を見て、 リストを変更するlist.sortに対し、新たなリストを返すsortedがあるように リストをシャッフルするrandom.shuffleに対応する、「shuffled」関数を作ってみました。 from __future__ import print_function import random from tim…

random.shuffled

前稿でshuffled関数を作りましたが、randomモジュールはPythonで書かれているので、(C言語で書かれたarrayやcStringIOと違い)後から関数を好き勝手に追加できます。 >>> import random >>> def shuffled(x): ... x = list(x) ... random.shuffle(x) .…

Pythonによるデザインパターン

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)を読みました。 私はPythonでばっかり遊んでいるのですが、PythonとRubyとは基本は同じ機能のように見えるので、Pythonによるデザインパターンに翻訳してみようと思います…

マクローリン展開によるsin関数(Python)

マクローリン展開によるsin関数 に触発されて、Pythonでも同じ事をやってみました。 ・・・と言っても、Haskellの直訳はしません(できません)。 書いてみたら、イテレータ・ジェネレータだらけに・・・。 #sin.py from __future__ import ( with_statement…

実装継承を使うタイミング

いまだに継承を使うタイミングが分からない 委譲より実装継承を使う、というかStrategyよりTemplate Methodを使うのは、 クラス独自の機能追加が必要なときではないかと思います。 pythonのthreading.Threadクラスは、 runメソッドをオーバーライドすると、 …

タスクトレイに格納されるアプリの例 wxPython

from __future__ import ( with_statement, division, print_function, ) import wx class Frame(wx.Frame): def __init__(self, parent=None): wx.Frame.__init__(self, parent) # タスクトレイに入れるアイコン self.ico = wx.Icon("dw.ico", wx.BITMAP_TY…

Convention over Configuration パターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Convention over Configuration パターン (1) Convention over Configuration パターン (2) "Convention over Configuration(Co…

Convention over Configuration パターン (2)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Convention over Configuration パターン (1) Convention over Configuration パターン (2) CoCで重要なのは、まず規約を良く練…

終わったパターン

これで「Rubyによるデザインパターン」のPython訳は終わりです。我ながらひどい出来ですが、それでも来てくださる人がいたようです。ありがとうございました。 「実戦に勝る練習は無し」と、どこかで聞いたことがあります。 きっと、その通りなのでしょう。 …

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

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パターンに書き換えられ…