Pythonの関数の静的メンバーですか?

可能重複:
  
Pythonでの静的クラス変数

  
Python内部の静的変数と同等のものは何ですか?機能?

Pythonで静的フィールドを使用するにはどうすればよいですか?

例えば、関数が呼び出された回数を数えたいのですが、どうすればいいのですか?

ベストアンサー

メソッドが呼び出された回数をカウントする場合は、このようなクラスメンバーを使用できます。

class Foo(object):
    calls=0            # <--- call is a class member
    def baz(self):
        Foo.calls+=1

foo=Foo()
bar=Foo()
for i in range(100): 
    foo.baz()
    bar.baz()
print('Foo.baz was called {n} times'.format(n=foo.calls))
# Foo.baz was called 200 times

このように呼び出しを定義すると、

class Foo(object):
    calls=0            

Pythonはキー値ペア( ‘calls’、0)を Foo .__ dict __
に配置します。

Foo.callsアクセスすることができます。
foo =)のような Foo のインスタンスも
foo.calls でアクセスできます。

新しい値を Foo.calls割り当てするには、
Foo.calls = ... を使用する必要があります。 インスタンスは foo.calls
= ...
を使うことができません。これは、Pythonが foo .__ dict __
に新しいキーと値のペアを置くためです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です