前回と前々回からの続きです。
2010年11月7日日曜日
2010年11月5日金曜日
Pythonのメタクラスで __new__() メソッドが必要な例
Pythonのメタクラスで __init__() メソッドではなく、__new__() メソッドを必要とする例を考えていたら、@aodagさんの「Pythonでfinalなクラス」がまさにそれだった。
イカは例によってPython 3版
イカは例によってPython 3版
2010年11月3日水曜日
Python 3のデザインパターンでメタクラスしてみた(2)
前回の続きです。
・メタクラス
メタクラスとは一体何なのでしょうか?
その詳細については、@aodagさんの「Pythonのメタクラスについて」という文書を読んでください……これは、メタクラスをどうやって説明しようか散々悩んだ末、Python初心者の私が内容の怪しい説明をするよりは、上級者の方のちゃんとした説明を読んで頂いた方がいいに違いない!と信じたからであって、メタクラスを説明しようとしたらめちゃくちゃ面倒臭いし、さっぱり分からなかったので手抜きをしようとした訳ではありません!!ので、くれぐれも誤解のなきようお願い致します!!!(←言い訳)
ただ、この資料はPython 2系向けの資料なので、サンプルコードをそのままPython 3で実行するとエラーが発生します。
念のため、サンプルコードをPython 3向けに修正しつつ実際に実行してみた結果を下記に掲載しますので、恐れ入りますが、適宜読み替えてください。
・メタクラス
メタクラスとは一体何なのでしょうか?
その詳細については、@aodagさんの「Pythonのメタクラスについて」という文書を読んでください……これは、メタクラスをどうやって説明しようか散々悩んだ末、Python初心者の私が内容の怪しい説明をするよりは、上級者の方のちゃんとした説明を読んで頂いた方がいいに違いない!と信じたからであって、メタクラスを説明しようとしたらめちゃくちゃ面倒臭いし、さっぱり分からなかったので手抜きをしようとした訳ではありません!!ので、くれぐれも誤解のなきようお願い致します!!!(←言い訳)
ただ、この資料はPython 2系向けの資料なので、サンプルコードをそのままPython 3で実行するとエラーが発生します。
念のため、サンプルコードをPython 3向けに修正しつつ実際に実行してみた結果を下記に掲載しますので、恐れ入りますが、適宜読み替えてください。
2010年11月1日月曜日
Python初心者によるPythonのメタクラスのはまりどころのまとめ
私「そっか、クラスオブジェクトを生成するのは type.__new__() で、その実体は、Pythonのソースの Objects/typeobject.c にある type_new()関数だったんだね!」
ぐぐる様「クラスオブジェクトを生成するのは __build_class__ 関数だよ」
私「え?」←イマココ
ぐぐる様「クラスオブジェクトを生成するのは __build_class__ 関数だよ」
私「え?」←イマココ
2010年10月31日日曜日
Python 3のデザインパターンでメタクラスしてみた(1)
必要もないのにPython 3とデザインパターンとメタクラスを使うのはPythonプログラマ的厨二病の定番らしいので、とりあえず全部混ぜてエントリを書いてみました。(挨拶)
Pythonでデザインパターンを試す場合はGoFのSingleton パターンが定番らしいのですが、今回は私の好みでFlyweight パターンを選択しました。
Flyweight パターンの詳細については、恐れ入りますがWikipediaの該当項目を参照してください。
Pythonでデザインパターンを試す場合はGoFのSingleton パターンが定番らしいのですが、今回は私の好みでFlyweight パターンを選択しました。
Flyweight パターンの詳細については、恐れ入りますがWikipediaの該当項目を参照してください。
登録:
コメント (Atom)