中身が空のクラス

pythonでは中身が空のクラスを定義しておいて、クラスをnewしたあとにフィールドなどを追加できる。具体的な例を以下のとおり

class Hoge: pass

h = Hoge()
h.name ="wakizaka"
h.age ="16"

なんかjavascriptっぽい。これは例えば関数の返り値でオブジェクトを返したいときに便利かもしれない。javaみたいにわざわざクラス変数とセッターとゲッターだけ持ったクラスをわざわざ定義する必要が無い。まぁ関数の返り値で複数の値を返したいときはタプルや辞書を使えば大体大丈夫なんだけどね。まぁオブジェクトを返すと.でアクセスできるから書きやすいという利点がある。

プログラミングは楽しい

楽しいけど、万人にお薦めはしない。
プログラミングに興味のある人、というか何か作りたいものがある人にはかなりお勧めするけど、あんまり無くて何となくやってみようかなとか思ってる人にはお勧めしない。プログラミングより楽しい事も世の中にはいっぱいあるし。


ただ、プログラムに興味のある人であっても胸を張って「pythonかわいいよpython」とも言いにくい。

O/Rマッパーの話

pythonでO/Rマッパー(以下ORM)と言えば、Django付属のものしか使った事が無かったんだけど、クローラーなどを作ろうとしたときにDjangoのORMをどうやって使えば良いのかわからなかったので、別のORMを試してみる事にした*1

この前のUnohラボのエントリを参考にしてSQLAlchemyについて調べてみた。今まではORMなんてどれも一緒だろうと思ってたんだけど、なんかActiveRecordってやつとDataMapperって奴があるみたい*2
ActiveRecordとDataMapperの話はここでは割愛して((調べてもよくわからなかったのは内緒))、たぶんDjangoのORMはActiveRecordでSQLAlchemyはDataMapper
ただでさえ覚えるのが面倒なORMなのに、なんか今まで使ってたのと違うタイプのORMだとよけいに時間かかりそうで、今SQLAlchemyを使うかどうか悩んでるところ。あと流行ってるかはしらんが、SQLObjectはActiveRecordらしいので、こっちにしようかなぁとか、DJangoのORMが使えたらいいなぁとかも悩んだりしてて、全然進まない。


こんだけ悩んでるけど、どれ使ってもあんまり大差ないはず。悩んでる暇があればとにかく手を動かして作った方が早いと思った。

*1:実際はまだ試してない

*2:他にもあるのかもしれないけど

DjangoのO/Rマッパーをwebアプリ以外で使う方法

http://d.hatena.ne.jp/piro_suke/20080315/1205558725

これを読んで、リンク先の記事も読んで、結局どう使うのかわからずに死んだ。
だれか日本語で易しく説明してくれる人はいないものか…