深入理解python类的实例变量和类变量

发布时间:2019-08-24 09:33:48编辑:auto阅读(1722)

    本python是python 3.5版本~!!!


    class aa:
          w = 10
          def __init__(self):
               self.x = 11
               self.y = 12
          def add(self):
               return self.x + self.y

    a = aa()     #将a投入aa这个类中,进行实例化#
    print a.add()   #这个结果显然易见#
    #下边两条指令各起何作用?结果是输出两个 20 么?还是两个13?还是?
    aa.w = 20   

    #注意!aa.w不是一个叫aa的实例里面的w属性,而是类aa,他里面的w属性,这句话其实等于

    class aa:

            w=20                     #

    a.w = 13    #正常情况下,a.w的应该是10,但是这里手工赋值为13#
    print aa.w, a.w      #所以这个答案也显而易见啦#
    #程序继续增加如下,怎样理解这t和q呢?他们是___变量
    a.t = 14                 #实例a里面的属性t的值#
    a.q = 15                #原理同上#
    print a.t, a.q
    #程序继续增加如下,怎样理解这m和n呢?他们是___变量
    aa.m = 30           #同aa.w=20那句话一样,只不过用这种方式增加属性,而不用从头再把那个类写一遍,

    这句话其实等于

    class aa:

            m=20                     #

    aa.n = 40
    print aa.m, aa.n          


    #好了再来个提升吧
    #程序继续增加,下列三个print语句都能正确执行么?为何?
    b = aa()                   #b属于这个aa类#
    print b.x,b.y             #这个很直白#
    print b.t,b.q
    print b.m,b.n           #m和n在上面的程序里已经被aa添加了,所以结果是什么应该显而易见了#

    #要解决以上问题,首先得清晰何时类才有了类变量,实例有了实例变量?
    #其次要深入理解类变量的作用,实例变量存在的范围和谁相关!

关键字