python函数和类的区别_Python中类中的方法还有区别?

上一篇,我们讲到Python类中的属性是有区别的,爱思考的小伙伴们可能就会问了,Python中的方法是不是也有区别呢?是的,而且Python中的方法区别更大,让我们来看看吧~

Python类中的三种方法

Python中的方法可以分为三类:

实例方法:第一个参数是实例对象 self,必须通过实例去调用。

类方法:需要在方法前加 @classmethod 修饰,第一个参数是类本身,一般写作cls,类和实例都可以调用。

静态方法:需要在方法前加 @staticmethod修饰,没有隐含传递的参数:方法体中不能使用类或实例的任何属性和方法

这里的@classmethod 和 @staticmethod 都是函数装饰器(Decorators),简单来说它是一个修改其它函数的功能的函数。具体的细节涉及到Python更深层的东西。在这里我们只需要了解只要它俩出现,那么这个方法就是类方法或者静态方法。

看过上一篇的小伙伴们应该都知道self是什么了,在这里简单再说一下,我们可以使用self指代的是当前的实例,相当于每个实例的钥匙,根据self,每个实例只能调用自己的变量和方法。

是不是看完还是觉得有点绕呢~为了更清楚地了解这三个方法的差异,我们还是拿例子来进行讲解99d01b92ba4ddd2c00aa844ecccc5135bcbf26fb.png

在这个例子里面,我们定义了一个类Student,小伙伴们应该会发现,我们在Student类里定义了一个类属性grade和两个实例属性age和height。然后我们分别定义了三个方法,根据刚开始我们给的三种方法的介绍,小伙伴们能不能看出这三个方法分别属于哪一种呢?

这个不难~

print_age方法是一个实例方法,它的第一个参数是self,前面没有任何的修饰。

print_grade方法是一个类方法,他的第一个参数是cls,前面使用@classmethod修饰。

Print_info方法是一个静态方法,他没有任何的参数,前面使用@staticmethod修饰

我们在定义完Student类后,我们分别使用类Student和实例tom去调用这三个方法,看看会发生什么~38c1905b3a7dbf0879c87d517990e263e6724630.png

大家观察代码第15-22行可以看到,当我们使用类Student调用print_age方法时,它会报错,显示缺少一个参数self。这是因为这里不是这时还没有类的实例,而且方法中的self.age属性也不存在,这时候是不能调用实例方法的。而我们使用类Student调用print_grade方法就没有问题,因为我们已经声明这是个类方法,而且grade这个属性在类中已经定义好了。同样,因为我们已经声明print_info是静态方法,所以调用也是没有问题的。

我们也根据Student类生成了一个实例tom,然后我们使用实例tom去调用这三个方法,看看会发生什么~32ffe9dd683a09b54b6bb805ed06c70bbbd0fa9e.png

如上面的代码所示,三个方法都正确的输出了结果,表明这三种方法都可以被类的实例调用。

我也给小伙伴们制作了一个简单的表格,方便大家查询。df902f6c5ffd6508ff0a206d200b183c382528c7.png

实际使用中如何选择三种方法

那么说了这么多,比较了这三种方法的差异,那么为什么会有这三种方法的区别呢?因为他们对于不同属性的调用有所区别,可被调用的对象不同,所以在实际使用中就是根据这些差异来选择最合适的方法。

实例方法是类中最普遍的方法,我们通常定义的都是实例方法,不需要多说了。

关于类方法,如果说我现在要定义一个方法,这个方法只需要调用类属性,也只在把类当作一个对象使用的时候才会需要这个方法,或者说在逻辑上采用类本身作为对象来调用更合理,这时候就应该使用类方法。

关于静态方法,我们可以发现它不需要任何的参数,不会涉及到类中的属性和方法的操作。本质上说它只是在逻辑上逻辑上属于类,但是和类本身没有关系,在碰到这种情况时可以定义静态方法。

结束语

在Python的类中,不同的方法有不同的应用范围,根据自己的实际需求,选择合适的方法,才能发挥每个方法最大的用处。小伙伴们快快试起来吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 获取昨天的日期_利用Python来实现报表的自动发送,解放你时间去做更有意思的事情...

前言在日常工作中你可能因为每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、产品的等等。而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实现报表的自动发送,解放你的劳动力,可以让…

大数据 深度 分页_机器学习、深度学习、大数据 ?傻傻分不清楚?

提起机器学习四个字,不知你的脑海中是否会有一丝印象?毕竟身处信息时代,在日常生活中,无论通过什么媒介,接触到这个名词概念的机会还是挺大的。与之类似,还有以下这些名词概念:数据分析、数据挖…

jieba结巴分词--关键词抽取_结巴中文分词原理分析2

作者:白宁超,工学硕士,现工作于四川省计算机研究院,著有《自然语言处理理论与实战》一书,作者公众号:机器学习和自然语言处理(公众号ID:datathinks)结巴分词详解1中文分词介绍中文分词特点词是最…

cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频

在定制橱柜家具中,我们用CAD我们经常会用一些门型放置到绘图当中,来展示CAD图纸的美观性,如下图:那么这些门型要是一点点画却是麻烦,所以我们可以把门型做成动态快的形式,对门型进行任意拉伸,方…

python json库安装_python怎么安装requests库

requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多 因为是第三方库,所以使用前需要cmd安装pip install requests 安装完成后import一下,正常则说明可以开始使用了。 基本用法: requests.get()用于请求目标网站&am…

32获取外部中断状态_Linux中断一网打尽(1) — 中断及其初始化

1中断是什么既然叫中断, 那我们首先就会想到这个中断是中断谁?想一想计算机最核心的部分是什么?没错, CPU, 计算机上绝大部分的计算都在CPU中完成,因此这个中断也就是中断CPU当前的运行,让CPU转而先处理这个…

文件夹_【教程】创建透明文件夹(非隐藏文件夹哦)

Hello 今天 不夜君 来教大家如何创建 一个 透明的 文件夹 效果类似这样哦~~是不是什么都看不到呢 大家不要慌 下面来看一下选中后的样子呀~~怎么样 是不是十分的酷炫呢其实这个方法的原理 我也不是很懂 所以就不献丑了 直接附上教程吧!!当然 有多种实现方…

山东栋梁机器人比赛_谁是最强“移动机器人”?来深技师这场全国大赛一决高下!...

9月24日第一届全国技能大赛世赛移动机器人项目全国机械行业选拔赛在深圳技师学院闭幕!为期三天的赛程中来自全国职业院校、机械行业相关企业的40支参赛队伍、130多名选手和专家教练相聚在深技师美丽的鹤鸣湖畔展开了激烈的比拼~点击边框调出视频工具条 ▲ 点击视频&…

python办公自动化excel_python办公自动化:Excel操作入门

1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwriter-*.*.*.tar.gz python setup.py install 2.操作一个简单的Excel文档 操作注释及代码: # 引入依赖模块 import xlsxwriter # 数据准备 datas ( [Rent, 1000], [Gas, 100 ], [Food…

c++回到起点旅行商问题_不要犯同样的错,提C型房车回渝上牌长途旅行的心路历程...

视频版看这里➡️ 第一次驾驶三吨重房车到成功在村道脱险,这段旅程值得回顾我们俩房车旅行近两年,为了更好的迎接新一年的到来,我们来简单回顾一下这一年多的房车旅程。我们俩的旅行口号是:奔跑的影视工作室,行走的房车…

中怎样载入选区_PS----关于选区的选取

对于刚刚接触到PS的小伙伴来说,怎样下手呢???嘿嘿,我来了,废话不多,直接上干货1.关于“矩形"或者“圆形”选取,快捷键M,取消选区ctrld,2."正圆“以及”正方形“ 怎么办呢&…

期刊投稿状态_追踪期刊在线系统投稿状态(十七)

大部分的期刊都有在线投稿系统,让作者能够快速简单完成投稿,一旦论文递交出去后,作者可以通过系统查看投稿状态,了解期刊处理论文的进度。作者在投稿出去后都会感到很焦虑,一直刷新系统状态,有时候出现了不…

添加公共引用目录_原来Word还可以自动生成图片和图表目录!

小李接到了一个任务,将技术文档中的示意图目录做出来,让客户能根据需求快速找到操作示意图,可是这份文档有三百多张图片,不过,这可难不倒小李。说到Word目录,大多数人都知道,可以为文档的标题设…

python类实例化_python基础8之类的实例化过程剖析

一、概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性。 二、类的语法 2.1 语法 class dog(object): #用class定…

db2 sql 判断select是否为空_学会复杂一点的SQL语句:Oracle DDL和DML

create:创建表创建用户创建视图创建表create table student(id int,score int) ;student后面与括号之间可以有空格可以没有创建用户create user liuyifei identified by 4852396;drop:删除整个表、删除指定的用户、删除指定的存储空间drop table table_n…

dataframe 一列的不同值_python数据分析包|Pandas-02之缺失值(NA)处理

本篇详解pandas中缺失值(Missing data handling)处理常用操作。缺失值处理常用于数据分析数据清洗阶段;Pandas中将如下类型定义为缺失值:NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,‘-NaN’, ‘-na…

https抓包_从Wireshark抓包看HTTPS的加密功能

近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来…

【Python】pip管理Python包

命令&#xff1a;pip install <包名> 安装指定的包。 pip install ipython #或者 pip install ipython -i https://mirrors.aliyun.com/pypi/simple/ 命令&#xff1a;pip uninstall <包名> 删除指定的包。 pip uninstall ipython 命令&#xff1a;pip list 显…

python整数类型在每一台计算机上的取值范围是一样的_关于python统计一个整数列表中不同数值种类数的问题。...

下面这段代码中&#xff0c;kind_num用于统计那个整数列表中有几种不同数值的整数。 class Solution(object): def distributeCandies(self, candies): """ :type candies: List[int] :rtype: int """ loc len(candies) mol loc % 2 if not (2…

实验报告总结_小学四年级数学下册全册知识点总结 ,家有四年级学生的家长收藏...

一、观察物体知识技能目标知道从低到高观察物体&#xff0c;体会出不同的位置看到的范围是不一样的&#xff0c;由远到近看到的范围是越来越小&#xff0c;从而体会不同距离观察物体形状的变化。知识检测摆一种物体&#xff0c;从不同的面去观察&#xff0c;看到的面是什么图形…