简单介绍一下两者的区别:

对于一般的函数test(x),它跟类和类的实例没有任何关系,直接调用test(x)即可

#!/usr/bin/python
# -*- coding:utf-8 -*-def foo(x):print  "running  (%s)" % xfoo("test")`在这里插入代码片`

对于普通的类,来调类中的函数:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#!/usr/bin/python
# -*- coding:utf-8 -*-class A:def test(self, x):print "running (%s, %s)" % (self, x)a = A()
a.test("test")

当我们需要和类直接进行交互,而不需要和实例进行交互时,类方法是最好的选择。

类方法与实例方法类似,但是传递的不是类的实例,而是类本身,第一个参数是cls。我们可以用类的实例调用类方法,也可以直接用类名来调用。

#!/usr/bin/python
# -*- coding:utf-8 -*-class A:class_attr = "test"def __init__(self):pass@classmethoddef class_test(cls):print  "running class_test(%s)" % (cls.class_attr)a = A()
a.class_test()
A.class_test()

静态方法类似普通方法,参数里面不用self。这些方法和类相关,但是又不需要类和实例中的任何信息、属性等等。

如果把这些方法写到类外面,这样就把和类相关的代码分散到类外,使得之后对于代码的理解和维护都是巨大的障碍。而静态方法就是用来解决这一类问题的。

比如我们检查是否开启了日志功能,这个和类相关,但是跟类的属性和实例都没有关系。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#!/usr/bin/python
# -*- coding:utf-8 -*-log_enabled = Trueclass A:class_attr = "attr"def __init__(self):pass@staticmethoddef static_test():if log_enabled:print("log is enabled")else:print("log is disabled")A.static_test()

Python中@staticmethod和@classmethod的作用和区别相关推荐

  1. 【Python】@staticmethod和@classmethod的作用与区别

    前言 Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法.而使用@static ...

  2. python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用

    python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用(3-20181205) 文章目录: 一. @staticmetho ...

  3. python中的classmethod_面试题:python 中 staticmethod 和 classmethod有什么区别

    面试中经常会问到staticmethod 和 classmethod有什么区别? 首先看下官方的解释: staticmethod: class staticmethod staticmethod(fu ...

  4. python中@staticmethod、@classmethod和实例方法

    1.形式上的异同点: 在形式上,Python中:实例方法必须有self,类方法用@classmethod装饰必须有cls,静态方法用@staticmethod装饰不必加cls或self,如下代码所示: ...

  5. @staticmethod和@classmethod的作用与区别

    一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...

  6. Python中3种引号的作用与区别

    简介: 本文主要介绍Python中,单引号,双引号,3个引号这3种引号的作用与区别. 1.简单介绍 单引号字符串:'python' 双引号字符串:"python" 三引号字符串:' ...

  7. Python中@staticmethod和@classmethod之间的区别

    @classmethod装饰器 (The @classmethod Decorator) The @classmethod decorator is an inbuilt function decor ...

  8. python 中if __name__ = '__main__' 的作用

    python 中if __name__ = '__main__' 的作用 前言 首先我们要知道在python里面万物皆对象,模块也是对象,并且所有的模块都有一个内置属性 __name__. 一个模块的 ...

  9. python的用途实例-python中pass语句意义与作用(实例分析)

    想必大家都是刚刚才开始接触python这门语言的,今天这篇文章就来带大家来了解一下python这门语言之中常常会用到的一个语句pass语句.想必大家都很好奇python中pass作用是什么,接下来我就 ...

最新文章

  1. 澎思科技马原:AI安防竞争还未结束,落地进入后发优势时代
  2. Go语言连接 zookeeper
  3. 源码面前没有秘密,推荐 9 个带你阅读源码的开源项目
  4. 在 xml 视图里指定 SAP UI5 VizType 实例
  5. Linux:tomcat安装/版本升级
  6. 2021全球智能手机出货13.2亿部,第一依旧是他,小米苹果紧随其后
  7. 直接内存访问 (Direct Memory Access, DMA)
  8. js高级学习笔记(b站尚硅谷)-7-函数中的this
  9. Bootstrap实战(第一弹:栅格实现5等分或8等分)
  10. 服务器信号灯一直闪烁,光猫的光信号灯一直闪红灯
  11. NFC应用(二)读写器模式
  12. 【系统分析师之路】第七章 复盘系统设计(业务流程建模)
  13. android改变系统语言,Android 9.0设置系统语言
  14. js制作的炫酷3D太阳系行星运行效果
  15. C语言程序设计 现代方法(第2版)pdf
  16. 计算机窗口中如何移动文件,简单介绍一下电脑中的文件或文件夹的复制、移动及删除的操作方式...
  17. 全球十大外汇黄金交易平台排名
  18. 网易互联网2019实习
  19. Web前端工程师必备的PS技能之切图
  20. 嵌入式面试题汇总-03.ARM部分

热门文章

  1. C#interface定义及使用浅析
  2. 20100422.C#.const VS readonly
  3. 使用 SetCustomizedString汉化UltraWinGrid的筛选
  4. 【MM模块】 Goods Receipt 收货 4
  5. 把内表 itab1 的 n1 到 n2 行内容附加到 itab2 内表中去.
  6. SAP RFC通信模式
  7. SAP KKBC_ORD报表中Plan和Target的区别
  8. ABAP-在SMARTFORMS中取消使用WORD作为编辑器
  9. 从Tronbull引狂欢,看APENFT与波场带来的新可能
  10. 巴奴与海底捞的战争背后,“单品即品牌”战略到底香不香?