Date:
2007-08-03
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
とかするとクラス属性が書き換わる。