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不带重复的全排列代码
Aug 13 Python
11个并不被常用但对开发非常有帮助的Python库
Mar 31 Python
python将ansible配置转为json格式实例代码
May 15 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
python中ASCII码和字符的转换方法
Jul 09 Python
Python实现端口检测的方法
Jul 24 Python
在python中实现对list求和及求积
Nov 14 Python
python操作文件的参数整理
Jun 11 Python
python 实现视频 图像帧提取
Dec 10 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 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调用三种数据库的方法(1)
2006/10/09 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php导出excel格式数据问题
2014/03/11 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
python3 下载网络图片代码实例
2019/08/27 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
python 实现超级玛丽游戏
2020/11/25 Python
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
岗位职责定义及内容
2013/11/08 职场文书
党风廉政承诺书
2014/03/27 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
采购员岗位职责
2015/02/03 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python