Python实例方法、类方法、静态方法区别详解


Posted in Python onSeptember 05, 2020

1、关于参数的区别

实例方法:定义实例方法是最少有一个形参 ---> 实例对象,通常用 self

类方法:定义类方法的时候最少有一个形参 ---> 类对象,通常用 cls

静态方法:定义静态方法的时候可以不定义形参

2、关于方法定义时候添加装饰器的区别

实例方法:不需要添加装饰器

类方法:需要添加装饰器 ----> @classmethod

静态方法:需要添加装饰器 ---> @staticmethod

3、调用:

1.实例方法可以通过对象直接调用

2.但是用类名调用的时候,需要创建一个对象,并且在传递参数的时候要将对象传递进去

3.类方法可以通过类名直接调用,也可以通过对象来调用

4.静态方法可以通过类名直接调用,也可以通过对象来调用

4、补充

1.静态方法不可以继承

2.类方法不能访问实例变量,只能访问类变量

class Dog():

  age = 3   # 类变量
  def __init__(self):
    self.name = "XiaoBai"  # 实例变量

  def run(self):   # 实例方法
    print("{} years old's {} is running!".format(self.age,self.name))

  @classmethod
  def eat(cls):
    # print(cls.name)    # 类方法,不能访问实例变量(属性)
    print("XiaoHei is {} years old".format(cls.age))  # 类方法只能访问类变量

  @staticmethod
  def sleep(name):
    # 静态方法与类无关,只能类中的一个功能而已
    # 静态方法不能访问类变量和实例变量
    print("{} is sleeping".format(name))

d = Dog()
d.run()   # 通过实例化对象调用实例方法
Dog.run(d) # 通过类名称调用实例方法,需要在方法中传入实例对象
d.eat()   # 通过实例化对象调用类方法
Dog.eat()  # 通过类名称调用类方法
d.sleep("XiaoLan")  # 通过实例化对象调用静态方法
Dog.sleep("XiaoLan") # 通过类名称调用静态方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
Python必须了解的35个关键词
Jul 16 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 Python
Python机器学习三大件之一numpy
May 10 Python
Python装饰器如何实现修复过程解析
Sep 05 #Python
Python JSON常用编解码方法代码实例
Sep 05 #Python
Python直接赋值及深浅拷贝原理详解
Sep 05 #Python
Python数据库封装实现代码示例解析
Sep 05 #Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 #Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 #Python
Python filter()及reduce()函数使用方法解析
Sep 05 #Python
You might like
社区(php&&mysql)二
2006/10/09 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
php将html转为图片的实现方法
2017/05/19 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
vue--vuex详解
2019/04/15 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
详解React 条件渲染
2020/07/08 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
python获取从命令行输入数字的方法
2015/04/29 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
在python image 中实现安装中文字体
2020/05/16 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
高中生自我评价个人范文
2013/11/09 职场文书
大学生入党思想汇报
2014/01/01 职场文书
自我鉴定三原则
2014/01/13 职场文书
公路施工安全责任书
2015/05/08 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript