全部博文(471)
分类: Python/Ruby
2012-03-01 16:01:31
在python的类中,类的属性有两种作用域:类变量,实例变量。Python中是不支持静态变量的,但是我们可以通过函数的默认值来实现静态变量的功能
类变量紧接在类名后面定义,相当于java和c++的static变量
实例变量在__init__里定义,相当于java和c++的普通变量
类似于java中的static变量与一般变量的区别。
类变量属于整个class所共享,而实例变量则仅仅属于特定对象实例。
类变量和实例变量在操作上的区别
访问权限
类变量通过类名点操作访问也可以通过实例点操作访问className.var objectName.var
实例变量只可以通过实例名点操作访问 objectName.var
类变量修改后的表现
通过className.var修改类变量,该类和所有实例所共享的数据将被修改,再次通过类或实例访问得到的将是新的数据。
通过objectName.var修改类变量,其效果将仅仅作用在该实例上,再次通过类或其它实例访问得到的仍然是旧的数据。但这一修改方式将对该类变量实例化,其结果是该实例将得到一个单独的该变量拷贝,此后此对象不再与类共享改名称的变量(实例化一说,是个人对这一现象的定义,还未找到权威描述)