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的词法分析与语法分析
May 18 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
python实现事件驱动
Nov 21 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python自动化之如何利用allure生成测试报告
May 02 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
推荐一篇入门级的Class文章
2007/03/19 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
谈谈JS中的!!
2017/12/07 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
详解Django中间件执行顺序
2018/07/16 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
最新会计专业求职信范文
2014/01/28 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
个人担保书范文
2014/05/20 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS