1.Python像其他的OOP语言一样在类里面会有构造和析构函数...
类似于PHP的, 构造和析构函数并不需要显式的写出来...他们只是在这个对象生成和销毁的时候才会被调用..
如果显式的定义了,那么在对象被生成和销毁时就会分别的调用这两个函数
构造函数: __init__ 这个函数在用代码生成一个对象的实例的时候就会被调用
析构函数: __del__ 这个函数一般很难知道在哪里会被调用,如果要指明他的调用的话就要用del语句 即(del 对象名称)
2.对象的变量、类的变量
对象和类的变量是两个独立的变量.
(1)python的类的变量更像是一个全局的静态变量.在类体里面这样使用ClassName.VariableName,不管新建多少个实例,这个变量始终都类似于静态变量
在类体外部也是用ClassName.VariableName的格式则可以使用这个类的变量
(2)python的对象的变量则是每个实例单独的互不冲突的.在类体中这样使用 self.VariableName.
在类体外部则是用instanceName.VariableName的格式使用变量
Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。
只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar
,Python的名称管理体系会有效地把它作为私有变量。
出处:http://www.cnblogs.com/qiyeshublog/archive/2012/01/12/2321048.html
其实,从名字就能看出来,Python的类变量和实例变量的区别:
类变量:
是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。例如下例中,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
- t1 = Test('jack')
- print Test.num_of_instance
- t2 = Test('lucy')
- print t1.name , t1.num_of_instance
- print t2.name , t2.num_of_instance
结果如下:
>>>
0
1
jack 2
lucy 2
出处:http://blog.csdn.net/chenggong2dm/article/details/9030481