我想写一个类,可以在每次创建该类的实例的时候类内部的变量就自加1,下次继续创建实例的时候,实例的属性也加1,效果大致如下
a = class A()
a.order = 0
b = class A()
b.order = 1
c = class A()
c.order = 3
我想写一个类,可以在每次创建该类的实例的时候类内部的变量就自加1,下次继续创建实例的时候,实例的属性也加1,效果大致如下
a = class A()
a.order = 0
b = class A()
b.order = 1
c = class A()
c.order = 3
class A(object):
order = 0
def __init__(self):
A.order += 1
a = A()
print(a.order)
b = A()
print(b.order)
c = A()
print(c.order)
print(a.order)
输出(环境:ubuntu, python3.4.2):
1
2
3
3
Process finished with exit code 0
用闭包,具体写法很多,下面以Python 3为例:
class A():
count = -1
def __new__(self, *args, **kwargs):
class HelperClass():
def __init__(self, helper):
self.order = helper
self.count += 1
return HelperClass(self.count, *args, **kwargs)
测试:
a = A()
print(a.order)
b = A()
print(b.order)
c = A()
print(c.order)
print(a.order)
结果:
0
1
2
0
2 回答5.3k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答960 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
输出:
a.order: 1
a.count: 1
b.order: 2
b.count: 2
c.order: 3
c.count: 3
a.count: 3