私のクラスのインスタンスメソッドに属性を追加したいと思います。私はthis questionで与えられた答えを試しましたが、この答えは関数のためにのみ - 私が言うことができる限り動作します。私が取得)Pythonのインスタンスメソッドへの属性の追加
class foo(object):
...
def bar(self):
self.bar.counter += 1
return self.bar.counter
bar.counter = 1
...
しかし、私がfoo()を呼び出しバー(::
AttributeError: 'instancemethod' object has no attribute 'counter'
私の目標を。
例として、私のような何かをできるようにしたいと思いますこれを行うには、 'counter'変数がbar()メソッドに対してローカルであること、またクラスの名前空間がさらに別の属性で乱雑にならないようにすることが重要です。これを行う方法はありますか?これを行うもっとpythonicな方法がありますか?あなたは、データメンバを初期化する方法__init__
必要
'クラスレベル(すべてのインスタンスが現在のカウントを共有する)、またはインスタンスレベル(各インスタンスは1から始まります)ことcounter'べきでしょうか? –
'counter'はインスタンスレベルでなければなりません – sbell
この関連する質問は役に立つかもしれません(またはそうでないかもしれません):http://stackoverflow.com/questions/7034063/adding-attributes-the-instancemethods-in-python –