python构造函数和析构函数

一、构造函数

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()

结果:

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

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

posted @ 2020-02-25 23:09  xyztank  阅读(542)  评论(0编辑  收藏  举报