Pythonのクラスメソッドとスタティックメソッドで悩む


 スタティックメソッドって静的メソッドとも言いますよね。性的とか変換されて困るんですが。性的メソッド。悪くないな。

 で、あれだ。Pythonだとメソッドの第一引数に明示的にselfとか書く訳だが、それは全然苦にならない。元々そういう仕組みだろ的な。C++で常にauto thisとか書けと言われたら困るが。ちなみにselfじゃなくてthisでも何でも任意の名前で構わないようだが、まあ素直にselfと書こう。
 そんな俺も、selfを使わない時にまで書くのは別の意味で苦になる。つーか使われない引数は気持ち悪いし。
 そんな時はもちろんあれが欲しくなる。性的な奴。じゃなくてスタティックなメソッド。Pythonにもあるのかな。あったあった。クラスメソッドとスタティックメソッド。…二つもあるんですか?

 で、違いを調べる。クラスメソッドはクラスを第一引数clsに取る、スタティックメソッドは何も取らない、のか。はあ。いまいちわかんね。つーか継承した時、どのクラスにバインドされるん。
 試しに適当な基底クラスと派生クラスと普通のメソッドを作ってみて、クラスメソッドやスタティックメソッドに書き変えて挙動の違いを見てみたところ、どの種類のメソッドでも多態の挙動は同じだった。継承ツリーの探索過程が同じで、渡される引数だけ違うのかな。インスタンスを第一引数selfに与えるのが普通のメソッド、インスタンスのクラスを第一引数clsに与えるのがクラスメソッド、引数を追加しないのがスタティックメソッド、か。多分。
 で、何の為に分かれてるんだろう、これらは。

 適当に調べてもいまいち分からんので、仕方なく英語で検索。すぐに出てきた。ちくしょう英語め。
 英語様によると、インスタンス変数に触るなら普通のメソッド、クラス変数だけ触れればいいならクラスメソッド、その辺に全く触らなくていいならスタティックメソッド、とのこと。
 ああ、最初に自分で思ってたじゃん。self要らない時は書きたくない、って。
 つまり、selfもclsも要らないなら、selfもclsも書かないスタティックメソッド。self要らないけどcls要るなら、clsを書くクラスメソッド。self要るなら普通メソッド。くそう。簡単な話じゃないか。

 まあ、本当にこれでいいのかは知りませんが。
 とりあえず、基底クラスのメソッドAから別の多態なスタティックメソッドBを呼び出す、みたいな使い方はちゃんと動いてるようだが。


XHTMLとかHTML5とかbrタグとか


 brタグありますよね。HTMLの。改行するよ的な。
 あれ、XHTMLだとXMLの規則に従うから、<br />とか書く訳で。綺麗といえば綺麗、でも融通利かないといえば利かない、でもまー別にどっちでも不満は無いな、とか思ってた。ただ、<br />じゃなくて<br/>とスペース無しで書くのは駄目なんかなー、とも思ってた。
 で、ついさっき別の用でXML仕様を読んでたら、何だよ、<br/>でもいいんじゃん。
 さらに、HTML5だと<br>でいいとかいう。DOCTYPEも超短くなってるし。XMLでもSGMLでもないからいいのか。まあ別にブラウザ的にも困らんだろうし。
 HTMLのおきらく感とXHTMLのカチカチ感が何だかPerlとPythonを思い出すが、プログラム言語でもないんだから、統一感が無くても良きに計らってくれるHTMLの方が好みかなあ、とは思った。
 プログラミングでは今のところPythonがすごく楽しいけど。「書き終わって走らせたら一発で動いてすごく不安」という例の謎心理も久々に経験したり。言語に慣れるにつれて無くなってくるんだよなあ、これ。まだ分からないけど、たぶんカチカチ感も気に入ってると思う。


Pythonがどう見ても日本で流行っていない


 いやー、今んとこ軽く好みなんすけどね。流行ってないっすね。
 つーか、日本語の資料がマジ少ないな。英語資料を当たってようやく出てくる的なことが多い。いや、まあ、他の言語でもネットで資料拾うならそんなもんか…。あ、Rubyはそうでもないのかな?
 と思ったけど、何かRubyも英語リファレンスの方が充実してるとか書いてあった。どういうことだ。
 まあ逆に、エロ漫画とか大好きな人には、日本語分かったらどれだけ貴重なエロが、みたいなことになっているのかもしれないが。

 技術関係はほんと辛いことになってきてるし、かといって「技術者みんな英語くらい楽に読めるし書けるし」みたいな世界はぶっちゃけ無理な理想論だし。早く現実的な解を探ってかないとどんどん辛くなりそうな気がするなあ。
 うーん。超ものすごい自動翻訳とかが無料で使えるようにならんかなあ。


JavaScriptさんと再会


 えーと、ものすげえ昔の話になりますが、ブログに移行する前のこっぱずかしいウンコ置き場で、まあここもウンコ置き場ですがもっと太いウンコ置き場で、それはそれは貧相な言語環境の、えーと何だっけ、JavaScriptだったかな、そんな奴を駆使したウンコというか日記を置いてたんですよね。何でわざわざショボいJSなんか使ったんだっけ、とか思ったらさらに太い太いふっといウンコの記憶が甦り掛けたので再封印。かの記憶を目覚めさせてはならん。

 そして、あまり考えたくないくらいには歳月が流れ。

 そろそろ若干かぐわしいウンコを生産する技術を身に付けるべく、Web2.0(笑)とかクラウド(笑)とか方面の情報を読み漁る。なーるほどー。概要は知ってたけど、実際書いてみると面白いもんですなあ。つーかこのJavaScriptって言語、どっかで聞いたような気もするけど、やけに潤沢でラグジュアリーで時流に乗った感じの言語周辺環境ですなあ。いかにも根幹技術って感じでー。
 つーか誰だお前。俺の知ってるJavaScriptじゃねえ。

 当時の感覚だと、ブラウザ間の差異がひどすぎて実用に耐えないのを無理矢理使ってた感じだけど、いつの間にこんなに整備されたのか。ライブラリで全部吸収してもらえますよ、とな。まるで普通の言語みたいだ。しかも、やれること広がりすぎ。昔のDOMなんて平気で読み取り専用プロパティだらけだったような朧気な記憶が。それが何だ、動的にレンダリングされまくりじゃないか。ちくしょうめ。

 まあ、そういうことなので、そこそこかぐわしいウンコが生産できそうな気はするのですが、物が物だけに、こんなウンコブログで報告はしにくいというか、そっちの人にこのブログを見られる流れはあまり嬉しくないしな。特に家族とかな(笑)。
 慣れてきたら、こっち向けでも何か面白い物を思いつくかもしれないけど。