アクセッサ

もうずいぶん昔読んだ本に、クラス内部でもアクセッサを使えということは書かれていた気がする。なんだっけ、GoF 本か、(More) Effective C++ か、Effective Java かたぶんその辺。
そういや、setter を使うときは self 省略不可で private にするとはまる*1というのが Ruby のちょっと嫌いなところではあるな。まぁ、たいしたことないんと言えば無いんだけど。
Python ではどうかというと、クラス外部からも平気で属性値にアクセスするのが普通で、たまにアクセッサが定義されているという感じ(なのでよく node.value なのか node.value() なのか迷う)。で、なんかログを取りたいとかフックを引っ掛けたいという場合は

class Foo(object):
    def __setattr__(self, name, value):
        # logging
        super(Foo, self).__setattr__(name, value)

    def __getattr__(self, name):
        # logging
        super(Foo, self).__getattr__(name)

    def __delattr__(self, name):
        # logging
        super(Foo, self).__delattr__(name)

と属性値アクセス自体をカスタマイズすればいい。

*1:send を使うか別名つければ何とかなる。Ruby 詳しくないので他にも方法あるかも