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检测服务器是否正常
Feb 16 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
Python提取Linux内核源代码的目录结构实现方法
Jun 24 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
Python读写及备份oracle数据库操作示例
May 17 Python
Python Requests库基本用法示例
Aug 20 Python
基于Python打造账号共享浏览器功能
May 30 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
sklearn的predict_proba使用说明
Jun 28 Python
Python排序算法之插入排序及其优化方案详解
Jun 11 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来改写404错误页让你的页面更友好
2013/01/24 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
基于jquery & json的省市区联动代码
2012/06/26 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python实现贪吃蛇双人大战
2020/04/18 Python
python实现126邮箱发送邮件
2020/05/20 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
店长岗位的工作内容
2013/11/12 职场文书
新员工欢迎词
2014/01/12 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
诉前财产保全担保书
2014/05/20 职场文书
植树造林的宣传标语
2014/06/23 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
保安2014年终工作总结
2014/12/06 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL