@staticmethod和@classmethod的区别

class 类

@staticmethod

@classmethod

首先创建一个类,如果想要调用Student类中的方法get_score(),就需要先创建类的实例,然后再用类的对象再去调用方法

In [3]: class Student():

...: def __init__(self, name, score):

...: self.name = name

...: self.score = score

...: def get_score(self):

...: print('%s get %s ' % (self.name, self.score))

...:

...:

In [4]: student = Student('treehl', 100)

In [5]: student.get_score()

treehl get 100

@staticmethod和@classmethod一个是静态方法,另一个是类的方法,两个装饰器的作用都可以使类不必再创建实例,直接用类来调用方法(类名.方法())

它们使用上的区别

@staticmethod不需要传递self,也不需要cls参数,就跟使用函数一样(类名.方法()或类名.属性名)

@classmethod也不需要像实例方法一样要传递self,但它需要cls参数(cls.类名()或cls.方法()或cls.属性())

要理解这些,首先需要理解类属性和实例属性的区别

In [6]: class A():

...: bar = 1

...: def foo(self):

...: print 'foo'

...: @staticmethod

...: def static_foo():

...: print 'static_foo'

...: print A.bar

...: @classmethod

...: def class_foo(cls):

...: print 'class_foo'

...: print cls.bar

...: cls().foo()

...:

In [7]: A.static_foo()

static_foo

1

In [8]: A.class_foo()

class_foo

1

foo

python 实例方法 类方法_Python实例方法 静态方法 类方法相关推荐

  1. python写一个类方法_Python基础|类方法的强制重写与禁止重写

    在Python中,类的继承与函数的重写,是我们再熟悉不过的知识点.但如何实现,方法的强制重写与禁止重写,这大概是很多初学者的一个知识盲区吧? 01 强制重写 需求:父类一个方法,强制子类去重写. 实现 ...

  2. python动态添加类方法_Python 动态添加类方法

    习题: 1. Shape基类,要求所有子类都必须提供面积的计算,子类有三角形.矩形.圆. 2. 上题圆类的数据可序列化 第一种方法:使用Mixin多继承组合的方式,混入其它类的属性和方法 第二种方法: ...

  3. python 静态方法 类方法 的作用_Python实例方法、类方法、静态方法的区别与作用详解...

    本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...

  4. python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...

    标签: 静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语 ...

  5. python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...

    Python 实例方法.类方法.静态方法的区别与作用 一.总结 一句话总结: 实例方法:第一个参数必须是实例对象,该参数名一般约定为"self",通过它来传递实例的属性和方法(也可 ...

  6. python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...

    这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 dt={} class ...

  7. python 类可以调用实例变量_python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法...

    1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过"类名()& ...

  8. python通过对象不能调用类方法和静态方法_Python实例方法、类方法和静态方法

    Python类的组成主要包含两个部分,类的属性和类的方法.类的属性是对数据的封装,这些数据是用来描述类所抽象的事物的特征:类的方法是用来表示对象的特定行为.Python的类的方法又可以进一步细分为三种 ...

  9. python 类可以调用实例变量_Python实例方法、类方法、静态方法区别详解

    1.关于参数的区别 实例方法:定义实例方法是最少有一个形参 ---> 实例对象,通常用 self 类方法:定义类方法的时候最少有一个形参 ---> 类对象,通常用 cls 静态方法:定义静 ...

最新文章

  1. Windows下Redis如何永久更改密码
  2. vue create()获取ref_vue-next+typescript 初体验
  3. B端可视化:图表设计
  4. Python paho-mqtt消息队列
  5. mysql命令大全_Keeplived+mysql双master高可用如何实现?
  6. Markdown语法--整理
  7. nginx ---- 配置成系统服务
  8. Ubuntu gedit中文乱码-转
  9. HDU 1022 Train Problem I
  10. kubernetes Serverless、CaaS、FaaS是什么
  11. cximage函数总结
  12. 开发老铁们,就参考这个图灵畅销新书书单加购!
  13. 误删数据?如何快速恢复Oracle数据库
  14. HOG+ADABOOST方式训练头肩检测模型
  15. 不良事件总结怎么写_2017年第一季度不良事件总结分析
  16. 健康小贴士:喝酒时别点哪些菜_新闻中心_新浪网
  17. 宣州谢脁楼饯别校书叔云
  18. win10自带输入法突然变成了繁体,輸入法怎麼成繁體了?
  19. 无频闪护眼灯哪个好?盘点四款无频闪的护眼台灯
  20. PHP学习-3 端口开放

热门文章

  1. switch开关 ~ 学习记录
  2. nmon安装为什么重启mysql_Centos7部署nmon监控工具
  3. 【数据结构和算法笔记】队列(Queue)详解:c实现
  4. 网页自动切换html css js,HTML页面自动清理js、css文件的缓存(自动添加版本号)_HTML/Xhtml_网页制作...
  5. jQuery 学习-DOM篇(二):jQuery 在 DOM 内部插入元素
  6. oracle设置缓冲区大小设置,描述Oracle优化库高速缓冲区
  7. 形象解释 undefined 和 null 之间的区别
  8. 2022牛客寒假算法基础集训营1 签到题7题
  9. 无线信号拓展与覆盖的解决方案
  10. NYOJ64 - 鸡兔同笼