在Python中动态递增类变量

在Python中动态递增类变量,python,Python,我有一个简单的类,每次创建该类的实例时,我都希望该类变量递增,我应该如何使用以下代码: class Person: person_count = 0 def __init__(self, username): self.username = username ashley = Person("Ash") daphne = Person("Daph") Person.person_count #I want this to be 2 只需在\uuuu in

我有一个简单的类,每次创建该类的实例时,我都希望该类变量递增,我应该如何使用以下代码:

class Person:

    person_count = 0

    def __init__(self, username):
        self.username = username

ashley = Person("Ash")
daphne = Person("Daph")

Person.person_count #I want this to be 2

只需在
\uuuu init\uuuu
中增加类变量:

class Person(object):

    person_count = 0

    def __init__(self, username):
        self.username = username
        Person.person_count += 1  # here

ashley = Person("Ash")
daphne = Person("Daph")

print(Person.person_count)
# 2
如果您使用的是Python2,请不要忘记从
object
生成子类


请参见

您必须在
\uuuu init\uuuu
中增加类的变量,如下所示:

class Person:
    person_count = 0
    def __init__(self, username):
        self.username = username
        self.__class__.person_count += 1
        # OR, 
        # Person.person_count += 1
例如:

>>> ashley = Person("Ash")
>>> ashley.person_count
1
>>> daphne = Person("Daph")
>>> daphne.person_count
2
您也可以使用类直接提取计数,如下所示:

>>> Person.person_count
2

使用
\uuuu init\uuuu
方法增加类变量:

class Person:
    person_count = 0
    def __init__(self, username):
        self.username = username
        Person.person_count += 1
可以使用类的名称访问类变量,因此在本例中,
Person
。请记住,您也可以从实例访问该类变量,因此:

>>> p1 = Person('person1')
>>> Person.person_count
1
>> p1.person_count
1
>> p2 = Person('person2')
>>> Person.person_count
2
>> p1.person_count
2
>> p2.person_count
2