Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析


Posted in Python onSeptember 20, 2019

本文实例讲述了Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)。分享给大家供大家参考,具体如下:

demo.py(类方法,@classmethod):

class Tool(object):
  # 使用赋值语句定义类属性,记录所有实例化工具对象的数量
  count = 0
  # @classmethod 定义类方法. 第一个参数是cls (cls用于访问类属性和类方法,不能访问实例属性/方法)
  @classmethod
  def show_tool_count(cls):
    # 不能访问实例属性
    print("工具对象的数量 %d" % cls.count) # cls.类属性名 访问类属性(类方法中)
  def __init__(self, name):
    self.name = name # 实例属性
    # 类名.类属性名 访问类属性(实例方法中)
    Tool.count += 1
# 实例化工具对象
tool1 = Tool("斧头")  # tool1.__class__属性指向类对象。 tool1.__class__.count实例对象访问类属性
tool2 = Tool("榔头")
# 类名.类方法 调用类方法
Tool.show_tool_count()

运行结果:

工具对象的数量 2

demo.py(静态方法,@staticmethod):

class Dog(object):
  # @staticmethod 定义静态方法;静态方法内部不能访问类属性/方法和实例属性/方法。不需要传默认参数。
  # Python中的静态方法与在类外部定义的普通函数作用相同,只是表明该函数仅供该类使用。
  @staticmethod
  def run():
    # 不能访问实例属性/类属性
    print("小狗要跑...")
# 类名.静态方法名 调用静态方法,不需要创建对象 (也可以通过实例对象调用)
Dog.run()

运行结果:

小狗要跑...

Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析


Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析


Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python全局变量操作详解
Apr 14 Python
Python极简代码实现杨辉三角示例代码
Nov 15 Python
python matlibplot绘制3D图形
Jul 02 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
django 中QuerySet特性功能详解
Jul 25 Python
Python pip安装模块提示错误解决方案
May 22 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
Python将字典转换为XML的方法
Aug 01 Python
python开发实时可视化仪表盘的示例
May 07 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 #Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 #Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 #Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 #Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 #Python
使用python获取邮箱邮件的设置方法
Sep 20 #Python
Python中的上下文管理器相关知识详解
Sep 19 #Python
You might like
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
Python3最长回文子串算法示例
2019/03/04 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
Linux如何压缩可执行文件
2014/03/27 面试题
大学毕业生工作的自我评价
2013/10/01 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
广播节目策划方案
2014/05/23 职场文书
赔偿协议书范本
2014/09/12 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android