美文网首页
python构造函数和析构函数

python构造函数和析构函数

作者: Xyxtank | 来源:发表于2019-07-22 13:04 被阅读0次

    一、构造函数

    1、定义

    构造函数__ init __称为class的构造函数与构造方法,一般作为实例化设置初始值而存在的。即一般是为了初始化对象时将必须要用到的属性、方法做一些定义,而存在。

    2、作用

    • __ init __(self)这个是构造方法,实例化一个对象时,这个方法就会在对象创建时自动调用,实例化类就是创建对象,就会调用这个方法。
    • 实例化对象是可以传入参数的,这些参数被传入init方法中,可通过重写方法来自定义对象初始化操作。

    3、示例

    定义一个Animal类,初始化name名称和color颜色的属性。对象实例化,并调用test方法后,再返回定义对象的属性。

    class Animal():
        #构造函数
        def __init__(self,name,color):
            print('构造函数运行')
            self.name = name
            self.color = color
    
        def test(self):
            print('自定义函数运行')
            return self.name,self.color
    
    animal = Animal('天鹅','白色')
    print(animal.test())
    

    结果:

    构造函数运行
    自定义函数运行
    ('天鹅', '白色')
    

    二、析构函数

    1、定义

    析构函数(destructor)与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已经调用完毕),系统会自动执行析构函数,析构函数往往用来做清理善后的工作,比如说在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存。

    2、作用

    主要是销毁/删除临时的变量,主要对那些长期占用内存的临时变量进行销毁,其方法是del。

    3、示例

    • 析构函数---手动释放内存
    class Animal():
        def __init__(self,name,color):
            print('构造函数运行')
            self.name = name
            self.color = color
    
        def test(self):
            print('自定义函数运行')
            return self.name,self.color
    
        def __del__(self):
            #析构函数
            print('释放内存资源')
    
    animal_one = Animal('天鹅','白色')
    del animal_one #手动释放资源
    
    def run():
        animal_two = Animal('天鹅', '白色')
        print(animal_two.test())
    
    run()
    

    结果:

    构造函数运行
    释放内存资源
    构造函数运行
    自定义函数运行
    ('天鹅', '白色')
    释放内存资源
    

    手动释放资源可以利用del方法。

    • 析构函数---系统自动释放内存
    class Animal():
        def __init__(self,name,color):
            print('构造函数运行')
            self.name = name
            self.color = color
    
        def test(self):
            print('自定义函数运行')
            return self.name,self.color
    
        def __del__(self):
            #析构函数
            print('释放内存资源')
    
    animal_one = Animal('天鹅','白色')
    
    def run():
        animal_two = Animal('天鹅', '白色')
        print(animal_two.test())
    
    run()
    

    结果:

    构造函数运行
    构造函数运行
    自定义函数运行
    ('天鹅', '白色')
    释放内存资源
    释放内存资源
    

    这里需要注意自动释放资源与手动释放资源的区别。手动释放资源时,可以选择在哪一个环节释放变量资源,而在系统释放资源是在程序调用完成后,再释放资源,一般是在程序执行最后才进行资源释放。

    相关文章

      网友评论

          本文标题:python构造函数和析构函数

          本文链接:https://www.haomeiwen.com/subject/ytnilctx.html