self について
ここにとても明快な論拠がある。"self"を明示的に引数として記述することによって,以下の2つの関数呼び出しが論理的に同じであることを補強できる,というのである。つまり,メソッドfooはクラスCのインスタンスであることを論理的に示せるわけだ。
foo.meth(arg) == C.meth(foo, arg)
和訳 なぜPythonのメソッド引数に明示的にselfと書くのか | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記
ふむふむ
書いてみる
#!/usr/bin/env python # -*- coding: utf-8 -*- class C: def __init__(self,bar): self.bar = bar def foo(self,data): print self.bar, data c = C('hoge1'); c.foo('hoge1-1'); C.foo(c,'hoge1-2')
結果
hoge1 hoge1-1
hoge1 hoge1-2
なるほどなるほど