在python中,静态方法、类方法、属性方法,刚接触对于它们之间的区别确实让人疑惑。

类方法(@classmethod)

  • 是一个函数修饰符,表是该函数是一个类方法
  • 类方法第一个参数是cls,而实例方法第一个参数是self(表示该类的一个实例)
  • 类中普通函数至少要一个self参数,代表类对象实例
  • 类方法至少需要一个cls参数,通过cls可以获取到类本身的属性方法等元信息。当有个子类继承时,传入的是子类对象。
  • 对于类方法两种调用方式,类.func(),类实例.func()

静态方法(@staticmethod)

静态方法是不需要类(cls)和类实例(self)参数的。所以它的使用场景是:和类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法。比如封装一个工具类,一般情况下都可以采用静态方法形式。

静态方法的优点:

  • 代码可读性好:看到该标签就知道这个方法并不需要依赖对象本身的状态。
  • 节省内存空间,既然是与类实例无关自然就不用创建类实例对象。

属性方法(@property)

添加@property标签,表示将一个普通函数变成一个类属性,只读的

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820062641f3bcc60a4b164f8d91df476445697b9e000

参见知乎上一篇问答:

https://www.zhihu.com/question/20021164

转载于:https://www.cnblogs.com/tianboblog/p/9690667.html

python中静态方法、类方法、属性方法区别相关推荐

  1. 类的实例方法静态方法类方法属性方法属性

    目录: 分类 实例方法 静态方法 类方法 属性方法 属性 分类: 按照调用方式可以分为3种,实例方法.静态方法.和类方法 实例方法 实例方法只能通过实例对象调用,不能通过类进行调用.实例方法再定义时候 ...

  2. Python中_,__,__xx__方法区别

    _xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范. 方法就是以单下 ...

  3. Java 中静态方法 实例方法 具体方法区别与联系

    在查阅JDK文档时,经常会看到某个类的方法汇总,一般会以如下的格式列出来: 这几个标签对应的方法类型分别是什么意思呢? 1.   Static Method,静态方法,可以在不创建类实例的情况下,访问 ...

  4. python中函数和类的区别_Python中函数和方法的区别

    简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...

  5. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...

    本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...

  6. PHP中静态方法和实例化方法的区别

    文章来自:PHP中静态方法和实例化方法的区别 在PHP中类为什么要使用静态方法,有什么好处 不需要实例化?? 可以提高运行效率?? 这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究 ...

  7. python中的类属性、实例属性、类方法、实例方法

    定义类 class Person():pass 创建实例 xiaoming = Person() xiaohong = Person() 实例属性 xiaoming = Person() xiaomi ...

  8. python定义一个dog类 类属性有名字毛色体重_全面了解python中的类,对象,方法,属性...

    python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗, ...

  9. python中属于私有属性的是_Python中的实例属性和私有属性

    相关知识点 实例属性 实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中,而类属性定义在类下: 1 classC:2 b = 1 #类属性 3 4 def __init__(s ...

  10. python中getitem_解析Python中的__getitem__专有方法

    __getitem__来看个简单的例子就明白: def __getitem__(self, key): return self.data[key] >>> f = fileinfo. ...

最新文章

  1. 苹果新的编程语言 Swift 语言进阶(十三)--类型检查与类型嵌套
  2. ReactNative设置字体不随系统字体大小变化
  3. linux设置ipsan_Linux下IP SAN共享存储操作记录
  4. sensor接口之DVP
  5. 计算字符串相似度算法——Levenshtein
  6. 2017世界GDP排行地图可视化
  7. [转载]C++URL编码转换
  8. hppt加密 java代码_Http Sampler扩展(加密处理)
  9. oracle log_archive_dest_1 未指定导致flash_recovery_area引发数据库挂起
  10. echarts-锥型柱状图
  11. 【杂谈】万字长文回顾深度学习的崛起背景,近10年在各行各业中的典型应用
  12. 还在说软件测试没有中年危机?9年测试工程师惨遭淘汰
  13. 树上三角形(idea+lct或splay)
  14. Words of the Start
  15. 远程连接服务器显示:发生身份验证错误 要求的函数不受支持
  16. 免费且开源的ssh工具,支持多平台,文件传输
  17. 图像质量评价指标与通用数据集
  18. CSDN上海英雄会嘉宾及议程曝光 不能错过的期待
  19. API 设计好文收集
  20. 【技术写作】风格:走向清晰和优雅——写作、编辑和出版指南| Style: Toward Clarity and Grace

热门文章

  1. content 控件(24)
  2. 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画
  3. celery expires 让celery任务具有时效性
  4. python异步回调函数的实现
  5. linux下NIS服务的配置
  6. python 将字典转成url参数
  7. 小程序中 wx.navigateTo 页面跳转没有反应?
  8. 让APK只包含指定的ABI(转)
  9. linux驱动开发(十)——misc杂散设备
  10. 学生管理系统----当然封装类型