一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用

这篇具有很好参考价值的文章主要介绍了一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们都知道 ,python类中有三种常见的方法 ,分别是实例方法 ,类方法和静态方法 。那么这几个方法到底有什么作用 ? 它们之间有什么区别 ?该如何使用 ? 带着这些问题 ,下面我们就来了解下这三种方法 。

1.方法介绍

2.代码说明

若我们要实现一个学生的类 ,里面要实现3功能,分别是:

功能1:计算每个学生的总成绩 ,即get_total_score()方法
功能2 :对实例化的学生进行总成绩排名 ,即rank()方法
功能3:对考试时间说明 ,即exam_time()方法

import random
​
​
class Students(object):
​
    scores = []
​
    def __init__(self, name):
        self.name = name
​
    # 实例方法:
    def get_total_score(self):  # 返回某位学生的总成绩
        total_score = random.randint(200,600)
        student_scores = (self.name, total_score)
        Students.scores.append(student_scores)
        return student_scores
​
    # 类方法
    @classmethod
    def rank(cls):      # 学生成绩排名
        total_scores = Students.scores
        return sorted(total_scores, key=lambda x:x[1], reverse=True)
​
    # 静态方法
    @staticmethod
    def exam_time():    # 考试时间说明
        return {"考试时间":'上午10~12点,下午2~4点'}
​
​
a = Students('张三')
a.get_total_score()     # 1.实例方法调用:通过实例对象来调用
b = Students('李四')
b.get_total_score()
c = Students('王五')
c.get_total_score()
d = Students('赵六')
d.get_total_score()
e = Students('刘七')
e.get_total_score()
​
print(Students.rank())          # 2.类方法调用:使用类名调用,也可以使用实例对象调用
print(Students.exam_time())     # 3.静态方法调用:使用类名调用,也可以使用实例对象调用
​

可以看到,在学生类中分别定义了实例方法 ,类方法和静态方法 。 那么 ,为什么我们将它定义成了不同的方法呢 ?这就要从业务的角度去理解 :

计算每个学生的总成绩是针对的每个学生 ,因此实例化不同的学生,从而显示它的总成绩 ,所以定义实例方法是合理的 。

对实例化的学生进行总成绩排名,这个排名很明显是对这个对象的整体(类) 进行的排名 ,通过实例化学生(对象)调用排名很明显是不合理的,而应该对整个学生,即学生的这个类进行排名 ,故它定义成类方法是合理的 。

对考试时间说明 ,这个功能即用于学生 ,但是它又是独立于学生,在这个方法中并不会用到类或实例中的属性和方法 。故它申明成静态方法是比较合理的 。那么这里就会有个问题 ,既然它独立于学生这个类 ,故它是否可以放在类的外面当做函数使用呢 ? 首先说从用法上来说是可以的。你在类外面写一个同样的函数也能完成此事 。但是从业务角度来说,如果这个方法的功能不能用于其它其它的类的话 ,那它放在这个类内很合理 。反之,若这个方法的功能也能被其它类所调用 ,那么它申明为函数就更合理 。

 最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用,软件测试,软件测试工程师,自动化测试,软件测试,自动化测试,功能测试,程序人生,职场发展

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用,软件测试,软件测试工程师,自动化测试,软件测试,自动化测试,功能测试,程序人生,职场发展

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 文章来源地址https://www.toymoban.com/news/detail-690225.html

到了这里,关于一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】一文详细介绍plt.rcParams 在 Matplotlib 中的原理、作用、注意事项

    【Python】一文详细介绍plt.rcParams 在 Matplotlib 中的原理、作用、注意事项 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分92+),分享

    2024年04月11日
    浏览(79)
  • python中@运算符和*运算符在矩阵乘法中的区别与作用

      我们在看python程序时,经常可以看到@运算符和*运算符,其中@运算符在传统python中通常是作为装饰器使用的。但是在Python 3.5之后,它又具备了矩阵乘法运算的功能。下面使用示例来对比这两个运算符对矩阵运算的影响:   导入用到numpy包:   创建一个维度为2×3×3的

    2024年02月12日
    浏览(47)
  • Python中的静态类变量和方法

    如何在 Python 中创建静态类变量或方法? huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。 在类定义内但不在方法内声明的变量是类或静态变量: 正如@millerdev 指出的那样,这会创建一个类级 i 变量,但这与任何实例级 i 变量不同,

    2024年02月06日
    浏览(77)
  • 【从零学习python 】45.Python中的类方法和静态方法

    类方法是以类对象作为第一个参数的方法。需要使用装饰器 @classmethod 来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以 cls 作为第一个参数。 使用场景: 当方法中需要使用类对象(如访问私有类属性等)时,定义类方法。 类方法一般和类属性配合使用。

    2024年02月12日
    浏览(39)
  • 解释Property、ValueProvider和DataProvider在数据绑定中的作用。如何处理Vaadin组件中的事件?

    解释Property、ValueProvider和DataProvider在数据绑定中的作用 在数据绑定的上下文中,Property、ValueProvider和DataProvider各自扮演着重要的角色。以下是对它们作用的详细解释: Property 在数据绑定的语境中,Property通常指的是对象的一个特性或属性,它持有与对象相关的某种数据。在诸

    2024年04月11日
    浏览(70)
  • 一文看懂电容的种类及其在电路中的作用

    电容是一种电子元件,它的作用是存储电荷能量。电容器由两个导体板之间用电介质隔开形成,导体板上分别带有相反的电荷,在电场的作用下,一边负一边正,形成电容。电容的大小由电容器的尺寸、电介质介电常数和导体板间距等因素决定,单位为法拉(F)。电容器在电子

    2024年02月11日
    浏览(42)
  • C++中的多态是什么?如何实现多态?解释一下C++中的虚函数和纯虚函数,它们的作用是什么?

    C++中的多态是什么?如何实现多态? 在C++中,多态(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装(Encapsulation)和继承(Inheritance)。多态指的是允许一个接口(或一个父类引用)在多种数据类型上被实现,或者一个接口被多个不同的类以不同的方式实现。

    2024年02月19日
    浏览(60)
  • 一文弄懂Verilog静态时序分析中的建立时间和保持时间

           在对Verilog代码进行静态时序分析的时候,建立时间和保持时间是需要我们重点关注的指标。 建立时间(Setup Time): 指采样时钟边沿到来之前,数据需要保持稳定的时间。如果数据在采样时钟的边沿到来之前的建立时间内这段时间变化,可能会造成时钟采样的数据在

    2024年01月16日
    浏览(45)
  • 【Python】进阶学习:一文了解NotImplementedError的作用

    【Python】进阶学习:一文了解NotImplementedError的作用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、

    2024年04月11日
    浏览(35)
  • 什么是原型链(Prototype Chain)?它在JavaScript中有什么作用?请解释一下JavaScript中的“this”关键字的含义和用法。

    原型链(Prototype Chain)是一种在JavaScript中创建对象的方式,它允许我们通过继承来扩展对象的属性和方法。 在原型链中,每个对象都有一个原型对象(也称为“原型”或“ proto ”),该对象继承了其父对象的属性和方法。当我们在一个对象上定义一个属性或方法时,如果该

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包