面向对象之静态成员变量
>>> class ClassName:
... """docstring for ClassName"""
... arg=0
... def __init__(self, arg):
... self.arg = arg
>>> obj = ClassName(2)
>>> print(obj.arg)
结果2
>>> print(ClassName.arg)
结果0
说明,通过 Object.var 和ClassName.var
访问的并不是同一个数据。上例中初始化函数改变的是self.arg这个变量,self就相当于Object
。arg和self.arg本身并不是一个变量。在Python的成员函数中访问arg的正确形式应该是ClassName.arg 。
>>> class ClassName:
... """docstring for ClassName"""
... arg=0
... def __init__(self, arg):
... ClassName.arg = arg
...
>>> obj = ClassName(2)
>>> print(obj.arg)
结果2
>>> print(ClassName.arg)
结果2
>>> class ClassName:
... """docstring for ClassName"""
... COUNT=0
... def __init__(self, arg):
... self.arg = arg
... ClassName.COUNT+=1
...
>>> obj1 = ClassName(1)
>>> obj2 = ClassName(2)
>>> obj3 = ClassName(3)
>>> obj4 = ClassName(4)
>>> print(ClassName.COUNT)
4
通过静态成员变量统计引用类的次数