和訳 : なぜPythonのメソッド引数に明示的にselfと書くのか

http://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay** 以下の2つの関数呼び出しが論理的に同じであることを補強できる


foo.meth(arg)
C.meth(foo, arg)** "self"を明示的に引数として記述することで,関数を追加して,クラスを動的に書き換えることができるようになる

# メソッドを持たないクラスを定義:
class C:
pass

# グローバル関数を定義:
def meth(myself, arg):
myself.val = arg
return myself.val

# メソッドをクラスに追加:
C.meth = meth


2点目についてはjavascriptではおなじみの手法なので、self引数が無いとこれが出来ないというわけではない。(代わりに、暗黙的な"this"を利用する)
しかし、理解のしやすさにおいては、python方式が圧倒的だと思う。
ただし、メソッド呼び出し時に「仮引数リストと引数リストが一致しない」という混乱もある。



そういえば、よくjavascript

var self = this;
とかやってあるけど、これって暗黙的であるthisをあえて変数に代入することで明示的にインスタンスを利用することを示そうとしているのだろうか。