2008-12-01から1ヶ月間の記事一覧

Py3k の super

super() について - methaneの日記 についてsuper() は、 super(Type, obj) とするとsuper型のオブジェクトを返し、そのオブジェクトには __getattr__() があって、 super(Type, obj).foo とすると、 mro の Type 以降で一番最初に foo を持っているクラスを…

Python と mix-in

http://d.hatena.ne.jp/w_o/20081205#p3 ←のエントリは、タイトルと本文とTB先に情報が分散していて引用しにくいので、このエントリで書きたい話題をまとめると、 Rubyはmix-inができるので、クラスの継承が必要無いので(親クラスのコンストラクタ呼び出しの…

Python の super のメリットとデメリット

※英語の読める人はこのエントリよりも Python's Super is nifty, but you can't use it を読んで下さいsuper を使うメリットは、コンストラクタのようなクラス階層全体にまたがるメソッドチェーンを、ダイヤモンド型の多重継承を行った場合でも実現できるこ…

Ubuntu (Debian) で、余計なパッケージをアンインストールする方法

aptitude を使うと、簡単にパッケージのアンインストールや依存関係の設定ができる。 たとえば、ubuntu-desktop から余計なパッケージをアンインストールする場合は次のような手順になる。ubuntu-desktop パッケージを開いて、「依存」の行にカーソルを当て…

Mix-inとか、うっかり防止とか

「あとそういえばMix-inという用語がちゃんとあった」 http://d.hatena.ne.jp/w_o/20081205#p3 これの問題は、「うっかりメソッド追加し忘れたら死亡」という点だろうか。最近ちょっとうっかりすることが多いというか、死亡しすぎな気がする。あと、書かれそ…

super() について

コメントやトラックバックで指摘されたとおり、下記の考察は完全に誤りです。後日 Python3 の super について記事を書きますhttp://d.hatena.ne.jp/w_o/20081205#p2 うーん…↓このぐらいに書けないものかな… class Base: def __init__(self): super().__init_…

namespace のインデント

vim

vimでC++のコードを書くとき、 namespace foo { とか書くときに、インデントレベルを増やさないにはどうしたら良いのだろうか。ActionScript3 で package も同じく。 package foo {} でインデントレベル増やしたくない。

委譲があれば継承がいらない?

引き続き、Pythonistaによる http://d.hatena.ne.jp/w_o/20081204#p2 への反論 で、Rubyはmoduleを使って委譲ができるので、クラスの継承が必要無いのであまり関係無い。 意味が判らなかったんだけど、http://synth.jp/pg/2007/04/ruby_10.html のことかな。…

Pythonにコンストラクタなんて構文は無いし、親クラスを呼び出す構文も無い

http://d.hatena.ne.jp/w_o/20081204#p2 まず…って書こうとしたら追記してあった。superの件に関しては、Pythonの人は、「やりかたはひとつがよい」と言ってるので、複数の書きかたができるPythonは悪であると言えるだろう。 これ、よく誤解されてるけど、「…

親クラスのコンストラクタ

http://d.hatena.ne.jp/w_o/20081203#p1 Pythonで親クラスの__init__を呼ぶルールって酷いと思うのだけど、これPython信者たちはなんて言って褒めてるのかな… * super(Type, self)というのが意味不明すぎ * 自分のクラスを書かないといけない * 忘れると死亡…

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。