1、类变量、实例变量概念
站在用户的角度思考问题,与客户深入沟通,找到湘乡网站设计与湘乡网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网站空间、企业邮箱。业务覆盖湘乡地区。类变量:
类变量就是定义在类中,但是在函数体之外的变量。通常不使用self.变量名赋值的变量。类变量通常不作为类的实例变量的,类变量对于所有实例化的对象中是公用的。
实例变量:
实例变量是定义在方法中的变量,使用self绑定到实例上的变量,只是对当前实例起作用。
2、访问
类变量
在类的内部和外部类变量都可以直接使用className.类变量的形式访问。但是在类的内部,也可以使用self.类变量来访问,但是这个是用含义就不同了(后面使用代码验证)。
实例变量
在类的内部,实例变量self.实例变量的形式访问;在类的外部使用对象名。实例变量的形式访问。实例变量是绑定到一个实例上的变量,它只是属于这个绑定的实力。而区别类变量的就是类变量是所有的来自用一个类的实例所共享。我们看到这里会有这样的疑问!
如果说类变量对所有来自这个类的所有实例所共享,那么假如我一个实例去改变了这个类变量(假设使用这样的操作object.类变量 = value)的值,那么对于其他的实例是不是都是可见的?
答案是否定的,下面验证。
class A(object): # 定义一个类变量,初值是10 class_var = 10 print id(class_var) def foo(self): print '在类中访问类变量:A.class_var=', A.class_var print '在类中访问实例变量: self.class_var=', self, self.class_var # 改变实例变量的值 self.class_var = 40 print '修改后访问类变量:A.class_var=', A.class_var print '修改后访问实例变量 self.class_var=',self, self.class_var # 这里的class_var和函数外面的class_var不是同一个东西,这是一个局部变量 class_var = 20 print id(class_var) print 'class_var=', class_var A.class_var = 15 print 'A.class_var=', A.class_var print 'class_var=',class_var print 'self.class_var=',self.class_var obj1 = A() obj2 = A() obj3 = A() obj1.foo() print A.class_var print obj1.class_var print obj2.class_var print obj3.class_var