Date: 2007-08-03
Tags: python

Re: [Python] メソッドを一時的に変更する方法とその実例

おー、なるほど! self.bar = self.baz としてもクラス属性が上書きされる訳じゃなくてインスタンスの属性に設定されるだけだから、あとで del self.bar すれば元のクラス属性のbarが使われるようになるのか!ということは、これはメソッドでなくても同じ事ができるね。

Python2.4

In [1]: class Foo(object):
...: bar = 1
...:

In [2]: f = Foo()

In [3]: f.bar
Out[3]: 1

In [4]: f.bar = 10

In [5]: f.bar
Out[5]: 10

In [6]: del f.bar

In [7]: f.bar
Out[7]: 1

ちなみに Foo.bar = 5 とかするとクラス属性が書き換わる。