在Python中动态增加类变量

时间:2017-02-12 20:54:14

标签: 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

3 个答案:

答案 0 :(得分:4)

只需在__init__中增加类变量:

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

如果您使用的是Python 2,请不要忘记从object继承。

请参阅What is the purpose of subclassing the class "object" in Python?

答案 1 :(得分:2)

您必须在__init__中将类的变量增加为:

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

答案 2 :(得分:0)

使用__init__方法增加类变量:

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