1.构造函数:

__init__(self), 这个方法就是构造函数,在实例化的时候自动调用。

所有如果这个函数内有打印的方法,当实例出来的时候会打印里面的信息。

__init__方法的第一个参数永远都是self,表示创建实例本身,在__init__方法内部,可以把各种属性绑定到self,因为self指向创建的实例本身。

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。

def __init__():pass
lass Baby:def __init__(self,name):#构造函数self.name = namedef cry(self):self.action = '哭了'print(self.action)
feng = Baby('小红')
print(feng.name)#实例化时构造函数自动执行,
print(feng.action)#cry方法未被执行,直接调用feng.action会报错,object has no attribute对象没有该属性

由于cry方法未被执行,直接调用feng.action会报错,object has no attribute对象没有该属性。解决方法有:

(1)在实例化对象后,先调用cry这个方法,在去打印feng.action属性

class Baby:def __init__(self,name):#构造函数self.name = namedef cry(self):self.action = '哭了'print(self.action)
feng = Baby('小红')
feng.cry()#先调用cry这个方法
print(feng.action)

(2)将cry这个方法放在构造函数里,这样实例化的时候函数会被执行,feng.action属性就生成了

class Baby:def __init__(self,name):#构造函数self.name = nameself.cry()#将cry这个方法放在构造函数里def cry(self):self.action = '哭了'print(self.action)
feng = Baby('小红')
print(feng.action)

2.析构函数:

__del__(self), 这个方法就是析构函数,是在实例被销毁时自动调用的。

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

析构函数:实例被销毁的时候执行的,不是必须

 def __del__():pass
import pymysql
class MySQL(object):def __init__(self,host,user,passwd,db,port=3306,charset='utf8'):#构造函数,类实例化的时候执行try:self.conn = pymysql.connect(host = host,user=user,passwd=passwd,db=db,port=port,charset=charset,autocommit=True  # 自动提交,执行insert,update语句时,可以自动提交)except Exception as e:print('数据库连接失败,%s'%e)else:self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor)def __del__(self):#析构函数,实例被销毁的时候执行self.cur.close()self.conn.close()print('数据库连接关闭')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 #有没有返回值都可以
my = MySQL('127.0.0.1', 'root', '123456', 'data')
my.ex_sql('select * from stu')
print(my.res)#可以用实例属性取值
# print(my.ex_sql('select * from stu'))#也可以用实例方法的返回值
print('我是最后一行代码')#执行完最后一行代码,数据库连接关闭

Python学习:构造函数与析构函数相关推荐

  1. C++学习——构造函数,析构函数与虚函数关系

    文章目录 1.构造函数,析构函数可以为虚函数吗? 2.析构函数和构造函数的作用? 3.构造函数和析构函数调用顺序? 4.类什么时候会调用析构函数? 1.构造函数,析构函数可以为虚函数吗? 构造函数不可 ...

  2. Python的构造函数和析构函数,对象和类的不一样

    1.Python像其他的OOP语言一样在类里面会有构造和析构函数... 类似于PHP的, 构造和析构函数并不需要显式的写出来...他们只是在这个对象生成和销毁的时候才会被调用.. 如果显式的定义了,那 ...

  3. 头歌Educoder实验:C++ 面向对象 - 构造函数与析构函数

    第1关:构造函数 -- 学生信息类 任务描述 本关任务:设计一个带有构造函数和析构函数的学生类. 相关知识 构造函数.析构函数与赋值函数是每个类最基本的函数.他们太普通以致让人容易麻痹大意,其实这些貌 ...

  4. Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数

    一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...

  5. Python:构造函数和析构函数

    python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说"__ init__"这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把 ...

  6. python在删除对象时会自动调用析构函数_Python面向对象程序设计构造函数和析构函数用法分析...

    本文实例讲述了Python面向对象程序设计构造函数和析构函数用法.分享给大家供大家参考,具体如下: 构造函数和析构函数 1.构造方法的使用 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名 ...

  7. python中的构造函数和构造函数和析构函数的作用

    构造函数和构造函数和析构函数都属于python中的特殊方法 其中的"__del__"就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调 ...

  8. python类构造方法缺省_浅谈python3 构造函数和析构函数

    要点: 1.魔法方法,被__双下划线所包围 在适当的时候自动被调用 2.在创建一个对象的时候,一定会调用构造函数 3. del析构函数,在del a对象的时候,并一定会调用该析构函数 只有当该对象的引 ...

  9. 【C++】C++类的学习(二)——构造函数、析构函数、拷贝构造函数以及this指针

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 1. 前言 在之前的博文< C++类的学习(一)--初识类>中,简单地讲述了类的 ...

  10. Python构造函数与析构函数

    构造函数与析构函数 构造函数: 用于初始化类的内容部状态,Python提供的构造函数式 __init__(); 也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这个函数里 ...

最新文章

  1. 自己写的程序密码功能 ------数字功能
  2. 深度解析AIoT背后的发展逻辑
  3. python 递归函数_连载|想用Python做自动化测试?递归函数
  4. checkInterruptWhileWaiting
  5. 刘挺 | 从知识图谱到事理图谱
  6. 从单亲家庭内向小男生到哈佛耶鲁全奖,百万年薪的“男神学长”活出了一部励志偶像剧!
  7. C#LeetCode刷题之#136-只出现一次的数字(Single Number)
  8. 下载丨7月数据库技术通讯:LINUX OS配置问题导致数据库重启
  9. 自定义shell脚本
  10. Linux 下查看系统是32位还是64位的方法
  11. 蓝桥杯 BASIC-17 基础练习 矩阵乘法
  12. 为链接加上加载等待信息
  13. Weld(CDI)教程
  14. 利用CSS3实现图片3D旋转
  15. numpy的array_equal函数
  16. DX11 游戏开发笔记 (一) 资源介绍
  17. Kotlin For循环详解
  18. 微信内链接已禁止访问是什么情况?微信链接防封细节
  19. vpu测试_联发科P30支持的VPU是什么?不知道就别说你懂科技了
  20. 海信75E5K怎么样 海信75E5K和75E5H区别 哪个好

热门文章

  1. lisp捕捉垂足_Autolisp对象捕捉设置
  2. Android抓包日记之Charles抓包软件的使用
  3. 如何使用yql实现跨域访问
  4. Maven 打包异常
  5. 8.10-DayT3游走(wander)
  6. Java导出PDF文档(模板导出和自定义)
  7. 告别魔兽回忆篇之为你守候
  8. TortoiseSVN 和 VisualSVN Server 使用教程
  9. 峰米S5对比当贝NEW D3X,当贝NEW D3X画质秒杀峰米S5
  10. 三谈大数据之足球盘口赔率水位分析思路及其实现利器