学 Python 这么久,终于把类函数 & 成员函数 & 静态函数给整明白了!

2023-11-15

前言

学过 Python 的小伙伴应该知道,在类定义过程中,会依据对具体需求的分析,对类函数,成员函数,静态函数进行声明与定义。

Python 基础稍弱的同学可能会对这三个函数的名称有些陌生,但你很有可能曾经见到过他们仨,只是没认出来而已(开个玩笑哈~)

下面将会对他们仨一一介绍,让你下次再见到他们仨时不再感到陌生。

类函数
1. 定义

使用@classmethod装饰器修饰的函数,且函数第一个参数为cls,表示该类函数被调用时第一个参数必须传入一个类。

2. 代码示例
@classmethod
def create_new_init(cls,name,age):
  return cls(name=name, age=age, nation='china')
3. 作用

类函数最常用的功能是实现不同的init构造函数,如上面的代码示例。

在声明类函数时,前面会有__init__构造函数,此处省略__init__构造函数的代码。

从类函数的代码示例中,也可以推断出__init__构造函数的内容,定义了name,age,nation三个属性,由类对象定义时传入的参数决定对象的这三个属性值。

类函数可以访问和修改对象的属性,例如代码示例中的nation='china'就对属性nation进行了修改,固定其值为china,不受对象定义时传入的参数影响。

成员函数
1. 定义

成员函数是最正常的类的函数,它不需要使用任何装饰器修饰声明,第一个参数self代表当前对象的引用,也可以传入其他参数。

可以通过此函数,来实现想要的查询 或 修改类的属性等功能。

2. 代码示例
def get_length_name(self):
  return len(self.name)
3. 作用

成员函数可以访问和修改对象的属性,例如代码示例中的len(self.name)就是对对象的name属性进行访问并计算其长度。

静态函数
1. 定义

使用@staticmethod装饰器来修饰的函数,静态函数与类没有什么关联,不访问和修改对象的属性。

相较于类函数成员函数,静态函数的第一个参数没有任何特殊性,只是普通的形参,如代码示例中的的参数msg

2. 代码示例
@staticmethod
def get_message(msg):
  return str(msg).split(':')[0]
3. 作用
  • 静态函数可以用来做一些简单独立的任务,比较方便测试,同时也能优化代码结构。

  • 如果一个函数不需要访问或修改这个类对象的属性,如果将其放到类外面似乎有点不恰当,此时静态函数是一个不错的选择。

欢迎关注 无量测试之道 公众号,回复:领取资源

Python+Unittest框架API自动化、

Python+Unittest框架API自动化、

Python+Pytest框架API自动化、

Python+Pandas+Pyecharts大数据分析、

Python+Selenium框架Web的UI自动化、

Python+Appium框架APP的UI自动化、

Python编程学习资源干货、

Vue前端组件化框架开发、

资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于IT互联网技术的分享。

包含:数据分析、大数据、机器学习、测试开发、API接口自动化、测试运维、UI自动化、性能测试、代码检测、编程技术等。

微信搜索公众号:无量测试之道

添加关注,让我们一起共同成长!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学 Python 这么久,终于把类函数 & 成员函数 & 静态函数给整明白了! 的相关文章

随机推荐

  • Cocos Creator使用Vs Code与Chrome调试

    使用VS Code配合 Chrome与VS Code 插件 Debugger for Chrome 调试cocos creator项目的网页版时 出现访问失败的情况 这是因为通过 的操作生成出来的launch json 文件的默认端口为80
  • SSD(single shot multibox detector)算法及Caffe代码详解

    这篇博客主要介绍SSD算法 该算法是最近一年比较优秀的object detection算法 主要特点在于采用了特征融合 论文 SSD single shot multibox detector 论文链接 https arxiv org ab
  • 什么是乐观锁和悲观锁?

    乐观锁和悲观锁是并发控制的两种不同策略 用于在多线程环境下管理共享资源的访问 它们有不同的思想和实现方式 悲观锁 Pessimistic Locking 思想 悲观锁的思想是 它假定在并发访问中会发生冲突 因此在访问共享资源之前会先加锁 以
  • 在教学中常被问到的几个vue3.x与typescript的问题,统一解答

    在教学当中 学生在学习vue3 x时 常常会问到typescript和vue3 x之间的关系 感觉这两个技术总是绑在一起的 下面老赵来统一解答一下 那学vue3 x 为什么要求也要掌握typescript Vue 3 x是一个使用TypeS
  • python计算矩阵间的欧式距离

    背景 计算一个M D的二维矩阵与一个N D的二维矩阵各个行向量之间的距离 不用循环来做 如果计算两个一维向量P C的维数相同 则它们的欧氏距离为 化简之后为 我们继而推广 一个一维向量与一个二维矩阵各个行向量的欧氏距离为 再继续推广到一个二
  • Java选择排序

    1 选择排序 选择排序是一种简单直观的排序算法 其基本原理是每一次从待排序的数组里找到最小值 最大值 的下标 然后将最小值 最大值 跟待排序数组的第一个进行交换 然后再从剩余的未排序元素中寻找到最小 大 元素 然后放到已排序的序列的末尾 反
  • 2.Node.js的安装 及 小案例——实现Hello World

    1 编辑器 初期 记事本Ediplus Nodepad 后期 Webstrom Hbuilder 2 Node js的下载 安装 测试 1 下载 http nodejs cn 2 安装 在windows版本操作系统下 直接点击 下一步 即可
  • vue+element在el-table表头添加搜索框实现模糊查询

    页面初始展示 实现模糊查询 gt
  • 如何理解邮件中的“CC、PS、FYI”等英文缩写?

    文章目录 2015年皮卡丘大学毕业初 加入一家总部在荷兰的外企 刚入职邮件中的英文缩写把皮卡丘折磨的晕头转向 比如OOO CC FYI OMW 你知道这些缩写表达的意思吗 01 OOO 是什么意思 OOO千万别理解成 哦哦哦 OOO Out
  • 安装虚拟机VMWare后再装LINUX系统(含避坑指南)

    一 下载 到官网下载虚拟机VMware Download VMware Workstation Pro 二 安装前的电脑设置 不要着急装 不设置好是安装不了的 还会引起暴躁 1 BIOS模式开启intel vt x 一般是禁用的 即 Int
  • 基于Native.js实现Android文件的读写操作

    Native js技术 简称NJS 是一种将手机操作系统的原生对象转义 映射为JS对象 在JS里编写原生代码的技术 我们在进行APP混合开发过程中免不了需要调用Andriod底层的一些API 也免不了可能会涉及到文件读取的操作之类的功能 这
  • Devops

    最近老是碰到这个名词 所以想了解一下这个到底是撒玩意 DevOps Development和Operations的组合词 是一组过程 方法与系统的统称 用于促进开发 应用程序 软件工程 技术运营和质量保障 QA 部门之间的沟通 协作与整合
  • windows利用kubectl命令和vscode远程操作kubenetes(k8s)

    windows 中安装kubecltl 命令 下载地址 http pwittrock github io docs tasks tools install kubectl install with chocolatey on windows
  • java 判断两个list是否相等的方法

    以下示例可以当做一个反面教材 实际是错误的 public static boolean isEquals List
  • 用apache实现禁止IP段或者主机对某个目录的访问

    Allow 指令 说明 控制哪些主机能够访问服务器的一个区域 语法 Allow from all host env env variable host env env variable 上下文 目录 htaccess 覆盖项 Limit 状
  • LayUI系列(一)之layui介绍以及登录功能的实现

    文章目录 一 layui简介 1 1 layui介绍 1 2 主要构成 1 3 迭代历程 1 4 layui easyui和bootstrap对比 1 4 1 layui与bootstrap对比 这两个都属于ui渲染框架 1 4 2 lay
  • TensorFlow框架做实时人脸识别小项目(一)

    人脸识别是深度学习最有价值也是最成熟的的应用之一 在研究环境下 人脸识别已经赶上甚至超过了人工识别的精度 一般来说 一个完整的人脸识别项目会包括两大部分 人脸检测与人脸识别 下面就我近期自己练习写的一个 粗糙 的人脸识别小项目讲起 也算是做
  • 二、关系模型

    关系模型 关系模型由关系数据结构 关系操作集合和关系完整性约束三部分组成 关系数据结构 关系模型的数据结构非常简单 只包含单一的数据结构 关系 域 一组具有相同数据类型的值的集合 笛卡儿积 在域上的一种集合运算 例如A 1 2 B a b
  • NNDL 作业7:第五章课后题(1×1 卷积核

    习题一 证明卷积具有交换性 即证明公式 首先 宽卷积定义为 其中 表示宽卷积运算 我们不妨先设一个二维图像和一个二维卷积核 然后对该二维图像X进行零填充 两端各补U 1 和V 1 个零 得到全填充的图像 现有 根据宽卷积定义 为了让x的下标
  • 学 Python 这么久,终于把类函数 & 成员函数 & 静态函数给整明白了!

    前言 学过 Python 的小伙伴应该知道 在类定义过程中 会依据对具体需求的分析 对类函数 成员函数 静态函数进行声明与定义 Python 基础稍弱的同学可能会对这三个函数的名称有些陌生 但你很有可能曾经见到过他们仨 只是没认出来而已 开