欢迎访问宙启技术站
智能推送

Python构造函数和析构函数的作用和区别

发布时间:2023-06-05 00:16:56

Python中的构造函数和析构函数都是特殊的函数,它们在类的实例化、销毁过程中扮演着重要的角色。本文将详细介绍Python中的构造函数和析构函数的作用和区别。

一、Python中的构造函数

1.定义

构造函数是在类实例化时自动调用的特殊方法,它的作用是用来初始化类的成员变量。

2.特点

(1)构造函数的名称必须为__init__。

(2)构造函数没有返回值,它只是用来初始化类的实例变量。

(3)当实例化类的对象时,__init__方法会自动调用。

3. 例子

例如,在下面的代码中我们定义了一个类Person,并给他定义了一个__init__函数,其中name是这个类的成员变量:

class Person:
    def __init__(self, name):
        self.name = name
        print('My name is',self.name)
        
p = Person('Tom')

这个代码块最后一行调用了Person类的构造函数__init__,并传递了一个字符串参数'Tom'。输出的结果是:

My name is Tom

这说明我们成功的创建了一个Person的实例,并初始化了它的name成员变量。

二、Python中的析构函数

1.定义

析构函数是在类实例销毁时自动调用的特殊方法,它的作用是执行当对象不再需要时的清理操作。

2.特点

(1)析构函数的名称必须为__del__。

(2)析构函数没有参数。

(3)当对象被删除时,__del__方法会自动调用。

3.例子

例如,在下面的代码中我们定义了一个类Person,并给他定义了一个__del__函数。在这个函数中我们只是简单的输出一段话,并没有做什么特别的:

class Person:
    def __init__(self, name):
        self.name = name
    
    def __del__(self):
        print(self.name,'is destroyed!')
        
p = Person('Tom')
del p

在这个代码块中,我们创建了一个Person的实例p,并初始化了它的name成员变量。在下一行我们使用del操作删除了这个对象,因为Python中每个对象都有一个引用计数器,当引用计数器归零时对象便会被删除。因此我们在删除这个对象的时候__del__方法也会被自动调用,在这里输出了一段话:

Tom is destroyed!

这说明我们成功的销毁了一个Person的实例,并在__del__函数中进行了一些额外的清理工作。

三、Python中构造函数和析构函数的区别

构造函数和析构函数都是Python中的特殊方法。它们之间的区别主要体现在以下几个方面:

(1)名称不同:构造函数的名称为__init__,析构函数的名称为__del__。

(2)作用不同:构造函数的作用是在类实例化时初始化类的成员变量,析构函数的作用是在类实例销毁时执行清理操作。

(3)调用方式不同:构造函数在类实例化时自动调用,析构函数在类实例被删除时自动调用。

(4)参数不同:构造函数可以有若干个参数,析构函数没有参数。

(5)返回值不同:构造函数没有返回值,析构函数也没有返回值。

综上所述,构造函数和析构函数在Python中都是非常重要的方法,它们对于类的实例化和销毁过程起到了至关重要的作用。需要我们熟练掌握它们的特性和使用方式,才能编写出高质量的Python代码。