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基础教程之字典操作详解
Mar 25 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
Python实现时间序列可视化的方法
Aug 06 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 Python
使用Python封装excel操作指南
Jan 29 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中switch语句用法详解
2015/08/17 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
详解python 发送邮件实例代码
2016/12/22 Python
快速查询Python文档方法分享
2017/12/27 Python
简述Python2与Python3的不同点
2018/01/21 Python
python3个性签名设计实现代码
2018/06/19 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python 使用type来定义类的实现
2019/11/19 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
中专生的个人自我评价
2013/12/11 职场文书
求职教师自荐书
2014/06/19 职场文书
介绍信的格式
2015/01/30 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript