【python】类变量和对象变量
2016-10-25 20:35
162 查看
来源:http://www.cnblogs.com/gtarcoder/p/5005897.html
python是一种解释性的语言,任何变量可以在使用的时候才声明以及定义,也可以在程序运行的任何位置进行声明和定义新的变量。
需要注意,类的变量(属性)和对象的变量(属性)是“独立”的,但在通过一个对象查找一个变量的时候,会现在改对象自身的__dict__中查找,如果找不到,则进入该对象代表的类的__dict__中进行查找。
注意 mutable, immutable变量的区别!这会导致python是否会在内存中为某对象新申请内存定义该变量。
可以在程序的任何位置给类或者对象定义新的变量
python是一种解释性的语言,任何变量可以在使用的时候才声明以及定义,也可以在程序运行的任何位置进行声明和定义新的变量。
class Man(object): #直接定义的类的变量,属于类 #其中 gender, avg_height为基本数据类型,immutable #lis为列表类型,为mutable的 gender = 'male' avg_height = 1.75 lis = ['hello', 'world'] def __init__(self, name): self.name = name #name在类的构造函数中定义,是属于对象的变量 a = Man('jason') b = Man('tom') #通过一个对象a访问一个变量x,变量的查找过程是这样的: #先在对象自身的__dict__中查找是否有x,如果有则返回,否则进入对象a所属的类A的 #__dict__中进行查找 #对象a试图修改一个属于类的 immutable的变量,则python会在内存中为对象a #新建一个gender变量,此时a就具有了属于自己的gender变量 a.gender = 'female' #对象b试图修改一个mutable的变量,则python找到类Man的__dict__中的变量lis, #由于lis是可以修改的,因此直接进行修改,而不会给b新生成一个变量。类Man以及类Man #的所有对象都公用这一个lis b.lis = ['fuck', 'world'] print a.__dict__ #属于a的变量,有 name, gender print b.__dict__ #属于b的变量,只有name print Man.__dict__ #属于类Man的变量,有 gender,avg_height,lis,但是不包括 name #name是属于对象的变量 Man.t = 'test' #此时Man的变量又多了t,但是对象a和b中没有变量t。 #(这里可以看出,对象的变量和类的变量是分开的) print a.gender #female print b.gender #male print a.lis #['fuck', 'world'] print b.lis #['fuck', 'world'] a.addr = '182.109.23.1' #给对象a定义一个变量,对象b和类Man中都不会出现(解释性语言好随性。。)
需要注意,类的变量(属性)和对象的变量(属性)是“独立”的,但在通过一个对象查找一个变量的时候,会现在改对象自身的__dict__中查找,如果找不到,则进入该对象代表的类的__dict__中进行查找。
注意 mutable, immutable变量的区别!这会导致python是否会在内存中为某对象新申请内存定义该变量。
可以在程序的任何位置给类或者对象定义新的变量
相关文章推荐
- python的__init__、__dict__以及类变量和对象变量的关系
- python 类变量和对象变量的区别联系-----类的基础(二)
- python中类变量和实例变量__之类对象属性(类变量和函数)
- Python基础:Python的变量和对象
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- Python基础:Python的变量和对象
- Python基础:Python的变量和对象
- python类型属于对象,不属于变量
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python使用类与对象的变量
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- Python中的变量名和对象
- 什么是类变量(Class Variable),对象变量(Object Variable)
- Python 类与对象变量
- Python - 类(class)的变量 和 对象(object)的变量 详解 及 代码
- python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的
- 什么是类变量(Class Variable),对象变量(Object Variable)
- 局部变量、全局变量、对象变量、类变量
- 能被某个类的所有实例对象共享,这样的变量称之为类变量
- Python:类与对象的变量[SimpleClass.py]