2. 类变量和实例变量

  • 类变量:
    ​ 是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。例如下例中,num_of_instance 就是类变量,用于跟踪存在着多少个Test 的实例。
  • 实例变量:
    实例化之后,每个实例单独拥有的变量。
class Test(object):  
    num_of_instance = 0  
    def __init__(self, name):  
        self.name = name  
        Test.num_of_instance += 1  
if __name__ == '__main__':  
    print Test.num_of_instance   # 0
    t1 = Test('jack')  
    print Test.num_of_instance   # 1
    t2 = Test('lucy')  
    print t1.name , t1.num_of_instance  # jack 2
    print t2.name , t2.num_of_instance  # lucy 2

补充的例子

class Person:
    name="aaa"
p1=Person()
p2=Person()
p1.name="bbb"
print p1.name  # bbb
print p2.name  # aaa
print Person.name  # aaa

这里p1.name="bbb"是实例调用了类变量,这其实和上面第一个问题一样,就是函数传参的问题,p1.name一开始是指向的类变量name="aaa",但是在实例的作用域里把类变量的引用改变了,就变成了一个实例变量,self.name不再引用Person的类变量name了.
可以看看下面的例子:

class Person:
    name=[]
p1=Person()
p2=Person()
p1.name.append(1)
print p1.name  # [1]
print p2.name  # [1]
print Person.name  # [1]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,910评论 2 16
  • 胡同里搭台唱戏,别家办的典礼,惠及邻里。先生偷偷听了一段,脚尖还跟着安抚街面,看那武生好阵子筋斗,啪滴一声种在台上...
    贱金属阅读 203评论 0 0
  • 那是八年前的秋天,人在旅途,走到十字路口,前路茫茫,不知何去何从。我的心情正如秋风扫落叶,满地枯黄。 本来不是移栽...
    太尔时空阅读 779评论 2 4
  • 《人生管理课》第二十八课【思维管理】单点突破法:赢家都在使用的思维模式 一、本课知识点 思维训练 1、单点突破法 ...
    柔柔顺顺阅读 261评论 0 0