Python中如何定义一个类,使得产生一个这个类的实例,类的一个变量就自加1?

我想写一个类,可以在每次创建该类的实例的时候类内部的变量就自加1,下次继续创建实例的时候,实例的属性也加1,效果大致如下

a = class A()
a.order = 0
b = class A()
b.order = 1
c = class A()
c.order = 3
阅读 5.7k
4 个回答
class A(object):
    count = 0

    def __init__(self):
        A.count += 1
        self.order = A.count


a = A()
print("a.order:", a.order)
print("a.count:", a.count)
b = A()
print("b.order:", b.order)
print("b.count:", b.count)
c = A()
print("c.order:", c.order)
print("c.count:", c.count)
print("a.count:", a.count)

输出:
a.order: 1
a.count: 1
b.order: 2
b.count: 2
c.order: 3
c.count: 3
a.count: 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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题