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 相关文章推荐
利用Celery实现Django博客PV统计功能详解
May 08 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
python发送告警邮件脚本
Sep 17 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
python读取xlsx的方法
Dec 25 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
python turtle绘图
May 04 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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
curl和libcurl的区别简介
2015/07/01 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
Windows下PyMongo下载及安装教程
2015/04/27 Python
详解Python字符串对象的实现
2015/12/24 Python
pip命令无法使用的解决方法
2018/06/12 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
python 构造三维全零数组的方法
2018/11/12 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
keras:model.compile损失函数的用法
2020/07/01 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
大一自我鉴定范文
2013/10/04 职场文书
带薪年假请假条
2014/02/04 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
迎国庆演讲稿
2014/09/15 职场文书
校园广播站开场白
2015/06/01 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL