首页 > 解决方案 > 如何创建实例特定的功能计数器?

问题描述

我想跟踪类内的函数计数,但是对于类的每个实例,这个计数都是不同的。

我们可以在一个简单的函数上设置一个计数器:

def foo1():
    pass

foo1.count = 0
foo1.count +=1
print(foo1.count)

现在让我们转向类方法:

class A:
    def foo2(self):
        print('Hi')

我们也可以在这里设置计数器

A.foo2.count = 0
a = A()
b = A()

但这个计数不是特定于实例的

A.foo2.count += 1
print(a.foo2.count)
print(b.foo2.count)

无法为 INSTANCE 方法设置计数:

a.foo2.count += 1

如果我们使用__func__ 它将等同于更改A.foo2.count

a.foo2.__func__.count += 1
print(b.foo2.count)
print(a.foo2.count)
print(A.foo2.count)

问题:如何使foo2.count实例具体?因此,a并且b可以有多个值foo2.count

请注意:我问的是函数属性,而不是类属性。

标签: pythonclasscounterinstance-variables

解决方案


使用__init__方法:

class A:

    def __init__(self):
        self.count_foo2 = 0

    def foo2(self):
        print('Hi')
        self.count_foo2 += 1 


a = A()
b = A()

a.foo2()

print(a.count_foo2)
print(b.count_foo2)

输出:

Hi
1
0

推荐阅读