广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python构造函数与析构函数超详细分析
  • 947
分享到

Python构造函数与析构函数超详细分析

Python 官方文档:入门教程 => 点击学习

摘要

目录1.构造函数2.析构函数1.构造函数 __init__(self), 这个方法就是构造函数,在实例化的时候自动调用。 所有如果这个函数内有打印的方法,当实例出来的时候会打印里面的

1.构造函数

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

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

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

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

def __init__():
        pass
lass Baby:
    def __init__(self,name):#构造函数
        self.name = name
    def 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 = name
    def 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 = name
        self.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构造函数与析构函数超详细分析的文章就介绍到这了,更多相关Python构造函数与析构函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python构造函数与析构函数超详细分析

本文链接: https://www.lsjlt.com/news/171130.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python构造函数与析构函数超详细分析
    目录1.构造函数2.析构函数1.构造函数 __init__(self), 这个方法就是构造函数,在实例化的时候自动调用。 所有如果这个函数内有打印的方法,当实例出来的时候会打印里面的...
    99+
    2022-11-13
    Python构造函数与析构函数 Python析构函数 Python构造函数
  • C++超详细讲解构造函数与析构函数的用法及实现
    目录写在前面构造函数和析构函数语法作用代码实现两大分类方式三种调用方式括号法显示法隐式转换法正确调用拷贝构造函数正常调用值传递的方式给函数参数传值值传递方式返回局部对象构造函数的调用...
    99+
    2022-11-13
  • C++:构造函数,析构函数详解
    目录前言一、面向对象二、构造函数1.基本概念2.构造函数重载1.构造函数分类2.有参构造函数:3.有参构造函数3个调用规则:4.拷贝构造函数5.析构函数总结前言 上期了解C++类中有...
    99+
    2022-11-12
  • C++超详细讲解析构函数
    目录特性析构函数处理自定义类型编译器生成的默认析构函数特性 析构函数是特殊的成员函数 特征如下: 析构函数名是~类名;无参数无返回值;一个类有且只有一个析构函数;对象声明周期结束,编...
    99+
    2022-11-13
  • C++分析构造函数与析造函数的特点梳理
    目录构造函数的调用构造函数的分类及调用拷贝构造的调用时机深拷贝与浅拷贝构造函数的调用 默认情况下编译器至少给一个类添加3个函数 1.默认构造函数(无参,函数体实现)--完成对象的初始...
    99+
    2022-11-13
  • C++修炼之构造函数与析构函数
    目录🌷默认成员函数🌷构造函数🌺引例🌺构造函数的概念及特性🌷析构函数🌺析构函数的特性🌷默认成员函数 上一章中我们谈到,如果一个类中什么成员也没有,那么这个类就叫作空类。其实这么说是不太...
    99+
    2023-05-14
    C++构造函数概念 C语言析构函数特性
  • C++超详细讲解构造函数
    目录类的6个默认成员函数构造函数特性编译器生成的默认构造函数成员变量的命名风格类的6个默认成员函数 如果我们写了一个类,这个类我们只写了成员变量没有定义成员函数,那么这个类中就没有函...
    99+
    2022-11-13
  • C++构造函数与析构函数怎么使用
    这篇文章主要讲解了“C++构造函数与析构函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++构造函数与析构函数怎么使用”吧!对象的初始化和清理生活中我们买的电子产品都基本会有出厂...
    99+
    2023-07-02
  • C++类与对象深入之构造函数与析构函数详解
    目录对象的初始化和清理一:构造函数1.1:构造函数的特性1.2:构造函数的分类二:析构函数2.1:概念2.2:特性三:拷贝构造函数3.1:概念3.2:特性3.3:拷贝构造函数调用时机...
    99+
    2022-11-13
  • C++类与对象及构造函数析构函数基础详解
    目录C++类与对象类的定义对象的创建构造函数和析构函数访问修饰符继承多态成员变量与成员方法总结C++类与对象 C++是一门面向对象的编程语言。在C++中,我们可以利用类来创建对象,...
    99+
    2023-05-16
    C++类对象函数 c++ 构造析构函数
  • 如何分析JAVA构造函数
    如何分析JAVA构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 一、什么是构造函数Java构造函数,也叫构造方法,是JAVA中一种特殊的函数。...
    99+
    2023-06-21
  • C++超详细讲解拷贝构造函数
    目录构造函数特征编译器生成的拷贝构造拷贝构造的初始化列表显式定义拷贝构造的误区结论构造函数 只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对...
    99+
    2022-11-13
  • C++中构造函数与析构函数的详解及其作用介绍
    目录构造函数默认构造函数有参构造函数析构函数析构函数例子析构函数执行时机局部对象全局对象构造函数 构造函数 (constructor) 是一种特殊的成员函数. 它会在每次创建类的新对...
    99+
    2022-11-12
  • C++的构造函数和析构函数是什么
    本篇内容主要讲解“C++的构造函数和析构函数是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的构造函数和析构函数是什么”吧!目录一、构造函数二、C++类的内存模型1、只定义成员函数2、...
    99+
    2023-06-20
  • C#结构体构造函数的实例分析
    这期内容当中小编将会给大家带来有关C#结构体构造函数的实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#结构体构造函数的应用是如何的呢?C#结构体构造函数的实例1、  &nbs...
    99+
    2023-06-18
  • 正确理解C++的构造函数和析构函数
    目录一、构造函数二、C++类的内存模型2.1、只定义成员函数2.2、往空类中添加静态成员变量2.3、再加入非静态成员变量三、this指针四、析构函数一、构造函数 首先,由于类只是一个...
    99+
    2022-11-12
  • C++编程析构函数拷贝构造函数使用示例详解
    目录构造函数析构函数拷贝构造之深拷贝和浅拷贝深浅拷贝区别首先定义一个类进行操作。 class MM { public: protected: int year; ...
    99+
    2022-11-12
  • Golang创建构造函数的方法超详细讲解
    目录组合字面量自定义构造函数从构造函数返回错误interface构造函数最佳实践基本构造函数主包类型多个构造函数组合字面量 组合字面量是最直接方式初始化Go对象,假设定义了Book类...
    99+
    2023-01-28
    Go创建构造函数 Go构造函数
  • C++构造析构赋值运算函数应用详解
    目录了解C++默默编写哪些函数不想使用编译器函数为多态基类声明virtual析构函数别让异常逃离析构函数绝不在构造和析构过程中调用virtual函数令operator=返回一个ref...
    99+
    2022-11-13
  • C#中构造函数和析构函数的作用是什么
    本篇文章给大家分享的是有关C#中构造函数和析构函数的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#构造函数(constructor)包括实例C#构造函数和静态C#...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作