Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1131949
  • 博文数量: 300
  • 博客积分: 37
  • 博客等级: 民兵
  • 技术积分: 772
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-26 04:46
文章分类
文章存档

2017年(4)

2016年(7)

2015年(19)

2014年(72)

2013年(71)

2012年(127)

分类:

2012-11-24 19:59:30

构造函数和析构函数
构造函数用于初始化类的内部状态,为类的属性设置默认值,Java,C++的构造函数都是和类名相同的函数,但是python则不同,python的构造函数为__init__, __init__方法除了用于定义实例变量外,还用于程序的初始化。但是__init__方法时可选的,如果不提供__init__方法,python则会给一个默认的__init__方法。
演示对Fruit进行初始化
class Fruit:
      def __init__(self, color):     #构造函数, 根据color的值来初始化__color
           self.__color = color
           print self.__color
 
      def getColor(self):
           print self.__color        #获取color的值
      def setColor(self, color):     #设置__color的值,用在初始化后又需要改变__color的值
           self.__color = color
           print self.__color
if __name__ == "__main__":
      color = "red"
      fruit = Fruit(color)           #自动调用构造函数
      fruit.getColor()               #输出:red
      fruit.setColor("blue")         #重置__color的值,输出:blue
注意:构造函数没有返回值
 
析构函数用于释放对象占用的资源,python提供了析构函数__del__(), 析构函数可以显式的释放对象占用的资源,是另一种释放资源的方法。析构函数和构造函数一样也是可选的,如果python不提供析构函数,则python在后台会提供默认的析构函数。
演示析构函数的使用
class Fruit:
      def __init__(self, color):
           self.__color = color
           print self.__color
    
      def __del__(self):          #定义析构函数,self对于析构函数同样是不可或缺的。
           self.__color = ""
           print "free..."
 
      def grow(self):
           print "grow..."
if __name__ == "__main__":
      color = "red"
      fruit = Fruit(color)
      fruit.grow()
      #del fruit                 #显式调用析构函数
 
垃圾回收机制
 Java中没有析构函数而是使用垃圾回收机制释放已经不再使用的对象,python也是用垃圾回收机制清除对象,python提供了gc模块释放不再使用的对象,垃圾回收机制有多种算法,python采用的是引用计数的方式,当某个对象在其作用域内不被其它对象引用时python就会清除该对象,垃圾回收机制有效地避免了内存泄露的发生,函数cellect可以一次性手机所有待处理的对象。
垃圾回收机制的使用方法不在示例。
阅读(742) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~