python类方法和静态方法的区别

python完全支持定义类方法,甚至支持定义静态方法。python的类方法和静态方法很相似,它们都推荐使用类来调用(其实也可使用对象来调用)。

python类方法和静态方法的区别类方法和静态方法的区别

Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常建议参数名为 cls)会自动绑定到类本身;但对于静态方法则不会自动绑定。
使用 @classmethod 修饰的方法就是类方法;使用 @staticmethod 修饰的方法就是静态方法。

相关推荐:《Python视频教程》
下面代码示范了定义类方法和静态方法:

class Bird:    # classmethod修饰的方法是类方法    @classmethod    def fly (cls):        print('类方法fly: ', cls)    # staticmethod修饰的方法是静态方法    @staticmethod    def info (p):        print('静态方法info: ', p)# 调用类方法,Bird类会自动绑定到第一个参数Bird.fly()  #①# 调用静态方法,不会自动绑定,因此程序必须手动绑定第一个参数Bird.info('crazyit')# 创建Bird对象b = Bird()# 使用对象调用fly()类方法,其实依然还是使用类调用,# 因此第一个参数依然被自动绑定到Bird类b.fly()  #②# 使用对象调用info()静态方法,其实依然还是使用类调用,# 因此程序必须为第一个参数执行绑定b.info('fkit')

登录后复制

从上面粗体字代码可以看出,使用 @classmethod 修饰的方法是类方法,该类方法定义了一个 cls 参数,该参数会被自动绑定到 Bird 类本身,不管程序是使用类还是对象调用该方法,Python 始终都会将类方法的第一个参数绑定到类本身,如 ① 号、② 号代码的执行效果。
上面程序还使用 @staticmethod 定义了一个静态方法,程序同样既可使用类调用静态方法,也可使用对象调用静态方法,不管用哪种方式调用,Python 都不会为静态方法执行自动绑定。
在使用 Python 编程时,一般不需要使用类方法或静态方法,程序完全可以使用函数来代替类方法或静态方法。但是在特殊的场景(比如使用工厂模式)下,类方法或静态方法也是不错的选择。

立即学习“Python免费学习笔记(深入)”;

以上就是python类方法和静态方法的区别的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2255923.html

(0)
上一篇 2025年2月27日 02:58:38
下一篇 2025年2月26日 13:05:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python注释怎么写

    python注释怎么写? 确保对模块, 函数, 方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释: Python中单行注释以 # 开头,例如:: # 这是一个注释print(“Hello, World!”) 登录后复制…

    2025年2月27日
    200
  • python中#是什么意思

    python中#是什么意思? python中#是Python的单行注释符号(#) 井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。 例如: # 这是一个注释print(“Hello, World!”…

    2025年2月27日
    200
  • python中的str是什么意思

    python中的str是什么意思? python中str()函数是将对象转化为适于人阅读的形式。 以下是 str() 方法的语法: class str(object=”) 登录后复制 参数 object — 对象。 立即学习“…

    2025年2月27日
    200
  • python中str和repr有什么区别

    python中str和repr有什么区别?下面给大家详细介绍: 1、内建函数str()和repr() 或反引号操作符(“)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。 2、str()函数得到的字符串可读性好(故…

    2025年2月27日
    200
  • python中sqrt是什么意思

    python中sqrt是什么意思? python中sqrt()方法是返回数字x的平方根。 以下是 sqrt() 方法的语法: import mathmath.sqrt( x ) 登录后复制 注意:sqrt()是不能直接访问的,需要导入 ma…

    2025年2月27日
    200
  • 爬虫为什么用python

    爬虫为什么用python: 因为爬虫用python写有多个优点: 1.各种爬虫框架,方便高效的下载网页; 2.多线程、进程模型成熟稳定,爬虫是一个典型的多任务处理场景,请求页面时会有较长的延迟,总体来说更多的是等待。多线程或进程会更优化程序…

    2025年2月27日
    200
  • 学python后到底能干什么

    python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的c语言,非常流行的java语言,适合初学者的basic语言,适合网页编程的java语言等,python是他们其中的一种。 Web应用开发(推荐学习:P…

    2025年2月27日
    200
  • python继承是什么

    python继承是什么? python类的继承 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编…

    2025年2月27日
    200
  • python类变量和实例变量的区别

    python变量的本质:被赋值。 1 普通python变量(非类相关变量)很容易理解,在被赋值后即变量存在,可读可写。 2 Python类的变量(类变量和实例对象变量)以某种方式在某地方被赋值,即存在,可被读写。 2.1 Python类变量…

    2025年2月27日
    200
  • python里break怎么用

    python里break怎么用? Python break语句,就像在C语言中,打破了最小封闭for或while循环。 break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。 break…

    2025年2月27日
    200

发表回复

登录后才能评论