この C/C++ コードに相当する Python 慣用表現は何ですか?
void foo()
{
static int counter = 0;
counter++;
printf("counter is %d\n", counter);
}
具体的には、クラス レベルではなく関数レベルで静的メンバーを実装するにはどうすればよいでしょうか。また、関数をクラスに配置すると何かが変わりますか。
ベストアンサー1
少し逆ですが、これで動作するはずです:
def foo():
foo.counter += 1
print "Counter is %d" % foo.counter
foo.counter = 0
カウンター初期化コードを下部ではなく上部に配置する場合は、デコレータを作成できます。
def static_vars(**kwargs):
def decorate(func):
for k in kwargs:
setattr(func, k, kwargs[k])
return func
return decorate
次に、次のようなコードを使用します。
@static_vars(counter=0)
def foo():
foo.counter += 1
print "Counter is %d" % foo.counter
残念ながら、プレフィックスを使用する必要がまだありますfoo.
。
(クレジット:オニー)