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的curses库使用教程
Apr 11 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
python 队列详解及实例代码
Oct 18 Python
解决python 输出是省略号的问题
Apr 19 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
python3.x 生成3维随机数组实例
Nov 28 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
Python包管理工具pip的15 个使用小技巧
May 17 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 操作文件的一些FAQ总结
2009/02/12 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
Python Gitlab Api 使用方法
2019/08/28 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
Java面试笔试题大全
2016/11/23 面试题
高考备战决心书
2014/03/11 职场文书
卖房协议书
2014/04/11 职场文书
目标责任书格式
2014/07/28 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
出国留学英文自荐信
2015/03/25 职场文书
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
MySQL实现配置主从复制项目实践
2022/03/31 MySQL