Python的构造函数和析构函数 对象的变量和类的变量不一样

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 的实例。

实例变量:

    实例化之后,每个实例单独拥有的变量。

  1. class Test(object):  
  2.     num_of_instance = 0  
  3.     def __init__(self, name):  
  4.         self.name = name  
  5.         Test.num_of_instance += 1  
  6.   
  7. if __name__ == '__main__':  
  8.     print Test.num_of_instance  
  9.     t1 = Test('jack')  
  10.     print Test.num_of_instance  
  11.     t2 = Test('lucy')  
  12.     print t1.name , t1.num_of_instance  
  13.     print t2.name , t2.num_of_instance   

结果如下:

>>>
0
1
jack 2
lucy 2

>>>

出处:http://blog.csdn.net/chenggong2dm/article/details/9030481

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值