这个 C/C++ 代码的惯用 Python 等价物是什么?
void foo() { static int counter = 0; counter++; printf("counter is %d\n", counter); }
具体来说,与类级别相比,如何在函数级别实现静态成员?将函数放入类中会改变什么吗?
有点颠倒,但这应该有效:
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.前缀。
foo.