Python:构造函数和析构函数

枫铃4年前 (2021-07-10)Python213

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

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

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

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

def __init__():
        pass

  def __del__():
        pass

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

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

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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('我是最后一行代码了。。。')

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。