トップ
«前の日記(2006-02-08)
最新
次の日記(2006-02-10)»
追記
設定
AOISAKURA - 日記 [登録]
日記の更新
日記本文
年
月
日
タイトル:
本文(
tDiary
スタイル/
書き方
):
[programming][OO][python] Modula-3とpythonのクラス <p>先日訂正したけど、pythonのクラス機構がModula-3から来ているということで、いくつか調べてみた。</p> <%=ul <<LIST <a href="http://en.wikipedia.org/wiki/Modula-3">Modula-3</a>(Wikipedia) <a href="http://www.elegosoft.com/pm3/pkg/modula3/src/discussion/partialRev.html">Partial Revelation and Modula-3</a> <a href="http://www1.cs.columbia.edu/graphics/modula3/tutorial/www/m3_toc.html">Modula-3 Reference & Tutorial</a> LIST %> <p>1,2つ目のリンクではクラスにメソッドを定義する際には、selfを使う事が書かれている。でも3つ目のリンクではそもそもクラスの話自体が出てこないのはなんでなんだろう...。</p> <p>で、見た感じだとpythonのようなselfの定義の仕方というより、C++でそのメソッドがどのクラスに屬するのかを定義するのと同じ使い方だった。こうなってくるとますますわからないのはpythonでそもそもクラスのブロック内でメソッドを宣言するのに第一引数としてselfを指定しないといけないのか、わからなくなってきた。</p> <p>以前見付けた、<a href="http://www.geocities.jp/shido_takafumi/py/python7.html">Python のクラスシステム</a>のように後付けクラス機構で、実装上の制限だからということなんだろうか。</p> <p>そうなると、Pythonチュートリアルで<a href="http://www.python.jp/doc/nightly/tut/node11.html#SECTION0011100000000000000000">C++ と Modula-3 で見られるクラスメカニズムを混合したもの</a>と書かれているけど、全然そうは思えない...。C++やModula-3ではクラスブロックの外でメソッドを定義しているけど(だからselfキーワードが必要なのは理解できる)、pythonはクラスブロックの中でメソッドを宣言しているにもかかわらずselfキーワードを必要としている。ちなみに、selfを抜いてメソッドを定義すると、定義はできるけど使おうとするとエラーを起こす。</p> <p>pythonのクラス機構は意図してModula-3からとってきたのか、それともそういう形になってしまったのかがわからない。selfキーワード自体はもちろん必要なんだけど、第一引数にわざわざselfなんて書かせるのは格好悪いと思うんだよなぁ。</p> <p>しかしModula-3はのきなみリンクが切れまくってて探しにくいのなんのって。国内にはModula-3の文法を説明したページなんて全然無いし。</p> <p>pythonのクラスの概念がModula-3から受け継いだモノで、SmallTalkとは異なる概念であるので、pythonがどういう風に影響を受けているのかとても興味はあるんだけども、突っ込みすぎると泥沼っぽいんでどのくらいまで突っ込もうかなぁ。</p> <%=ul <<LIST <a href="http://squab.no-ip.com:8080/wiki/725">メッセージ送信</a>(Squab Squeaker's Swiki) LIST %>
カテゴリ: |
keyboard
|
media
|
process
|
book
|
firefox
|
life
|
server
|
game
|
movie
|
更新情報を送る
この日の日記を隠す
絵日記(追加)
本日のツッコミ