展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python面向对象中常见的内置成员有哪些?

Python面向对象中常见的内置成员有哪些?

构造函数Python里所有类的构造函数都是__init__,其中根据我们的需求,构造函数又分为有参构造函数和无惨构造函数。如果当前没有定义构造函数,那么系统会自动生成一个无参空的构造函数。例如:在有继承关系的类中,只要父类被显示定义,那么子类在创建的时候就会调用父类的构造方法创建父类对象,尽管子类没有从父类继承属性,也会自动被执行。例如:如果子类想从父类继承获取属性,那么需要显示调用父类的构造函数才能获取,否则只能获取父类方法。例如:这里我们需要引入一个新的概念,即函数重载。在类内部,如果存在多个函数名相

本文目录

    构造函数

    Python面向对象中常见的内置成员有哪些?

    Python里所有类的构造函数都是__init__,其中根据我们的需求,构造函数又分为有参构造函数和无惨构造函数。如果当前没有定义构造函数,那么系统会自动生成一个无参空的构造函数。例如:

    Python面向对象中常见的内置成员有哪些?

    在有继承关系的类中,只要父类被显示定义,那么子类在创建的时候就会调用父类的构造方法创建父类对象,尽管子类没有从父类继承属性,也会自动被执行。例如:

    Python面向对象中常见的内置成员有哪些?

    如果子类想从父类继承获取属性,那么需要显示调用父类的构造函数才能获取,否则只能获取父类方法。例如:

    Python面向对象中常见的内置成员有哪些?

    这里我们需要引入一个新的概念,即函数重载。在类内部,如果存在多个函数名相同,函数参数不同(个数不同、类型不同、顺序不同)那么我们称这几个函数是重载函数,函数返回值不作为重载的依据。在java和C++里我们都有类似的概念。但是Python是动态编程语言,其数据没有数据类型,因此在类内部我们没法进行函数重载,因此类内部不能有同名的多个方法,所以我们的构造方法要么不写,要么只能写一个。如果不写系统会自动生成一个空的无参构造方法;如果写了,那么只能调用该构造方法。另外我们在学习装饰器的时候似乎在类内部写了几个同名的方法,例如:

    Python面向对象中常见的内置成员有哪些?

    那么这几个同名方法是重载关系吗?不是的,因为他们不是完整的方法,他们一定更要加上@property、@name.setter、@name.deleter限制才是完整的,因此这里不是函数重载。

    析构函数

    构造函数是在对象创建的时候被自动执行的,其主要职责是对对象进行初始化。析构函数则是在对象销毁(执行del或被回收)的时候被自动执行的,其主要职责是对对象进行回收。先前我们没有写析构方法,那么系统会自动生成一个空的析构函数。接下来我们就写一个析构函数。Python里的析构方法名为__del__。例如:

    Python面向对象中常见的内置成员有哪些?

    我们这么调用:

    Python面向对象中常见的内置成员有哪些?

    执行为

    Python面向对象中常见的内置成员有哪些?

    在这里我们要重点说下python的垃圾回收机制。

    现在程序员对系统的垃圾回收机制不是特别关注,因为现在硬件发展的很快,我们可用的资源很丰富,服务器内存4G都是小的,可能大多是8G起步,不够再加。但是对于一些高端岗位和高精行业,垃圾回收机制还是很重要的。所以我们在这里梳理下python里的垃圾回收机制。

    Python里的垃圾回收机制以引用计数为主。系统会为每个对象分配一个引用计数器,用来记录当前对象被使用的次数。既然涉及到计数,就有加和减的操作。系统规定,满足下述条件进行计数器加1操作:

    1.新创建一个对象

    2.引用一个对象

    3.对象作为实参传递。

    满足下述条件进行计数器减1操作:

    1.对该对象进行del操作

    2.该对象的引用被赋新值

    3.对象退出当前作用域(最常见的就是退出函数作用域)

    在python里,我们通过sys.getrefcount(对象名),来获取该对象的当前引用计数器,注意,首次这里的引用计数不一定为1,因为有系统临时引用。只有当指向对象的引用计数器变成0(首次的初始值)的时候,该对象才会真的被销毁,该对象的析构函数才会被执行。例如:

    Python面向对象中常见的内置成员有哪些?

    输出为

    Python面向对象中常见的内置成员有哪些?

    注意,上述首次调用sys.getrefcount(ad)的时候的返回值为4说明当前系统有其他的临时用用,那么我们最终只要到4了说明就返回初始状态了。最后delad的时候会将系统临时引用也释放。我们当前的运行环境是win+pycharm。我们再改下代码:

    Python面向对象中常见的内置成员有哪些?

    输出为

    Python面向对象中常见的内置成员有哪些?

    从上述输出可以看出,系统对基本数据类型似乎还有其他操作,造成其初始引用计数比我们预期的引用计数大。而引用数据类型数据则是完全在我们预期的。

    只有最终释放该对象的时候(引用计数为0的时候),__del__析构方法才会被执行。

    __str__方法

    先看我们的代码:

    Python面向对象中常见的内置成员有哪些?

    输出为

    Python面向对象中常见的内置成员有哪些?

    我们打印该对象的时候,得到是该对象的内存地址,能不能像打印基本数据类型的数据一样来打印我们的引用数据类型呢?比如说上述类Student应该打印他的实例变量啊。

    我们现在提到的__str__方法就是要完成这个功能的,__str__方法有一个返回值,这个返回值就是我们执行print的时候的输出值,因此我们可以在__str__方法内格式化输出内容。例如:

    Python面向对象中常见的内置成员有哪些?

    输出为

    Python面向对象中常见的内置成员有哪些?

    从上面的输出可以看出,我们想输出格式化引用数据类型数据的时候,就要重写该类里的__str__方法,该方法里你可以设置当前内容的输出内容。这个__str__方法是object类的方法,因为python里所有类都是直接或者间接从object派生出来的,因此每个引用数据类型都有__str__方法。我们只需要重写该方法覆盖父类的方法即可。否则系统会默认去调用object里的__str__方法。

    __dict__

    可能有些人说了,我怎么知道我的类有哪些内置成员(属性和方法)呢?比如说上面的__str_我压根就不知道有这个方法,我怎么调用?python类里确实有个属性,可以打印出该类的所有内置内容。即__dict__。注意这个__dict__是属性不是方法,调用的时候不要加()

    Python面向对象中常见的内置成员有哪些?

    输出为

    Python面向对象中常见的内置成员有哪些?

    为何stu1.__dict__的输出内容较少,而Student.__dict__的输出内容较多呢?因为stu1是对象,对于对象来讲,有意义的就是属性,因为方法是所有对象共享的。而数据是自己特有的,执行的时候只需要携带当前的对象的地址就可以执行该类的方法(即self)。而Student是一个类,类是有属性和方法组成的,所以Student.__dict__的输出稍微多点,包括方法和属性。

    如果你想知道该类的父类有哪些内置成员,你就打印该类的父类的__dict__属性即可。例如我们看下Student类的父类object有哪些内置成员,如下:

    Python面向对象中常见的内置成员有哪些?

    Ojbect.__dict__的输出稍微长些,自己打印看下吧,里面肯定有__str__的说明的。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。