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类的专用方法实例分析
Jan 09 Python
Python实现大文件排序的方法
Jul 10 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
python读取文件名称生成list的方法
Apr 27 Python
python3连接MySQL数据库实例详解
May 24 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
Python读写文件基础知识点
Jun 10 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
Python hashlib模块的使用示例
Oct 09 Python
分享Python异步爬取知乎热榜
Apr 12 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程序中的常见漏洞进行攻击
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
js function定义函数使用心得
2010/04/15 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
django缓存配置的几种方法详解
2018/07/16 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
关于Python-faker的函数效果一览
2019/11/28 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
Python LMDB库的使用示例
2021/02/14 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
农行实习自我鉴定
2013/09/22 职场文书
2013的个人自我评价
2013/12/26 职场文书
双方协议书
2014/04/22 职场文书
初一学生期末评语
2014/04/24 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
诚信教育主题班会
2015/08/13 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python