サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
doloopwhile.blogspot.com
2009年7月4日 Pythonで特異メソッド メソッドは普通class文の中で定義して、そのクラスのインスタンスはみんな同じメソッドを共有するものですが、 特定のインスタンスだけための特注品のメソッドを、特異メソッドと言います。 Rubyには特異メソッドのための構文がありますが、Pythonにはありません。 しかし、Pythonでは特異メソッドは不可能・・・というわけではありません。 それにはnew.instancemethodを使います。 import new class A(object): def __init__(self, n): self.n = n def spam(self, x): return self.n*x + 2 a1 = A(3) a1.spam = new.instancemethod(spam, a1, A) print a1.spam # => <b
2009年8月7日 アッカーマン関数 アッカーマン関数(アッケルマン関数・Ackermann function)という関数があります。 def ack(m, n): """アッカーマン関数""" if m == 0: return n + 1 elif n == 0: return ack(m - 1, 1) else: return ack(m - 1, ack(m, n - 1)) 一見、ちょっと奇妙なだけの関数ですが、実は原始再帰的でない関数 つまり、ループを使って書き直せない関数なのです! たとえば、Nの階乗は、原始再帰的関数です(つまりループで書けます)。 ちなみに、 こちら で、原始再帰的関数の定義が、Pythonで解説されています。 def fact(n): """数学的定義に近い階乗関数""" if 0 しかし、アッカーマン関数は、どうやってもループには直せない事が証明さ
2009年7月21日 メタプログラミングパターン (1) 特異メソッド 『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。 目次 Ruby向けデザインパターンその2。 メタプログラミングは動的言語の専売特許ではありません。 静的なC++では、テンプレートやマクロを使ってメタプログラミングをします。 それはつまり、メタプログラミング用に実行時とは別の言語を用意するということです。 (「使える言語」にC++(runtime)とC++(compile time)の2種類を書くというジョーク?があります。) しかし、動的言語のPythonならばより自然に柔軟な記述が可能です。 コンパイル時と実行時の区別が無く、クラスやオブジェクトを、リストや辞書並みに、バリバリ変更できるので、メタプログラミング用にPython自身を使え
2009年6月5日 Pythonによるデザインパターン 『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)を読みました。 私はPythonでばっかり遊んでいるのですが、PythonとRubyとは基本は同じ機能のように見えるので、Pythonによるデザインパターンに翻訳してみようと思います。 まず、デザインパターンの原則から 変わるものを変わらないものから分離する インターフェイスに対してプログラムし、実装に対して行わない 継承より集約 委譲、委譲、委譲 必要になるまで作るな(これは「Rubyによる~」の筆者による) これって、プログラミング全般に通じるものがあるようにも感じます。 Template Method Strategy Observer Composite Iterator Command Adapter Proxy 似た趣旨のブログ tachi
このページを最初にブックマークしてみませんか?
『doloopwhile.blogspot.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く