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使用multiprocessing创建进程的方法
Jun 04 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
linux安装python修改默认python版本方法
Mar 31 Python
详解小白之KMP算法及python实现
Apr 04 Python
python 提取文件指定列的方法示例
Aug 07 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
Python如何存储数据到json文件
Mar 09 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
用Python制作音乐海报
Jan 26 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
php中的常用魔术方法总结
2013/08/02 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
php微信开发之图片回复功能
2018/06/14 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
ECMAScript6--解构
2017/03/30 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
幼儿园秋游活动方案
2014/01/21 职场文书
会计岗位职责范本
2014/03/07 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
吨的认识教学反思
2014/04/27 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
机关作风建设心得体会
2014/10/22 职场文书
实习感想范文
2015/08/10 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
python随机打印成绩排名表
2021/06/23 Python