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中的二叉树查找算法模块使用指南
Jul 04 Python
使用Python脚本将绝对url替换为相对url的教程
Apr 24 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
Python装饰器基础概念与用法详解
Dec 22 Python
python修改txt文件中的某一项方法
Dec 29 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
Pytorch转onnx、torchscript方式
May 25 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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 什么是PEAR?
2009/03/19 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python逐行读写txt文件的实例讲解
2018/04/03 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
python框架flask表单实现详解
2019/11/04 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
python xlsxwriter模块的使用
2020/12/24 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
文化产业实施方案
2014/06/07 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
应届毕业生自荐信
2015/03/04 职场文书
入党群众意见范文
2015/06/02 职场文书
酒店厨房管理制度
2015/08/06 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL