アクセッサ
もうずいぶん昔読んだ本に、クラス内部でもアクセッサを使えということは書かれていた気がする。なんだっけ、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)
と属性値アクセス自体をカスタマイズすればいい。