python - 如何创建实例特定的功能计数器?
问题描述
我想跟踪类内的函数计数,但是对于类的每个实例,这个计数都是不同的。
我们可以在一个简单的函数上设置一个计数器:
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
?
请注意:我问的是函数属性,而不是类属性。
解决方案
使用__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
推荐阅读
- relayjs - 为什么 Relay Modern 发送 OPTIONS 请求
- java - 我需要有关 springboot 中 @PostAuthorize 方法的文档
- android - 列出将 >10 个改造调用与 rxjava2 组合在一起的子类型转换
- bash - bash中字符串插值的命令输出
- angular - Angular 6 谷歌广告词转换
- python - 如何在 sphinx 中包含模块
- javascript - 原生 javascript,处理点击,更改 url
- python - 无法使用 pyodbc 连接到 sql server
- ruby-on-rails - Rails - 在表单下拉列表中显示与用户相关的对象
- reactjs - GraphQL HOC 与子级的引用混淆 | 反应