构造函数和析构函数
构造函数用于初始化类的内部状态,为类的属性设置默认值,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可以一次性手机所有待处理的对象。
垃圾回收机制的使用方法不在示例。
阅读(1100) | 评论(0) | 转发(1) |