• python学习笔记(二十一)构造函数和析构函数


    python中的特殊方法,其中两个,构造函数和析构函数的作用:

    比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数。那么我们就可以把要先初始化的属性放到这个函数里面。

    构造函数:构造函数就是类在实例化的时候执行的函数。类中构造函数不是必须要写的,需要的时候才定义。

                     类在实例化的时候,会自动执行它,例如上面Person类,我只是实例化Person()这个类,那么它就会自动执行构造函数。

    def __init__():
            pass
      def __del__():
            pass

    而“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

    析构函数:实例被销毁的时候执行的。

    下面来看个例子。连接数据库时会调用构造函数,数据库使用完毕,就需要关闭数据库连接,此时调用析构函数,代码如下:

    import pymysql
    class MyDb(object):
        def __del__(self):
            #析构函数
            self.cur.close()
            self.coon.close()
            print('over...')
        def __init__(self,    #构造函数
                     host,user,passwd,db,
                     port=3306,charset='utf8'):
            try:
                self.coon = pymysql.connect(
                    host=host,user=user,passwd=passwd,port=port,charset=charset,db=db,
                    autocommit=True,#自动提交
                )
            except Exception as e:
                print('数据库连接失败!%s'%e)
            else:
                self.cur = self.coon.cursor(cursor=pymysql.cursors.DictCursor)
        def ex_sql(self,sql):
            try:
                self.cur.execute(sql)
            except Exception as e:
                print('sql语句有问题,%s'%sql)
            else:
                self.res = self.cur.fetchall()
                return self.res
    
    if __name__ == '__main__':
        my = MyDb('127.0.0.1','test','123456','test')
        my.ex_sql('select * from stu;')
        print(my.res)
        print('我是最后一行代码了。。。')
  • 相关阅读:
    Opencv(1)介绍篇
    植被覆盖度制图
    GIS应用开发AO(2)-空间分析ITopologicalOperate
    GIS应用开发AO(1)_普通几何图形绘制
    初识机器学习-人脸识别
    ArcGIS API for javascript4.3——RouteTask
    javascript学习(1)随机点名应用
    生活感悟之六
    生活感悟之五
    生活感悟之四
  • 原文地址:https://www.cnblogs.com/mululu/p/9071315.html
Copyright © 2020-2023  润新知