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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
用Django写天气预报查询网站
Oct 21 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
python实现超市商品销售管理系统
Oct 25 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
Python爬虫之Selenium实现键盘事件
Dec 04 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
PHP中对数据库操作的封装
2006/10/09 PHP
URL Rewrite的设置方法
2007/01/02 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
用console.table()调试javascript
2014/09/04 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
解决c++调用python中文乱码问题
2020/07/29 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
2014年学校党建工作汇报材料
2014/11/02 职场文书
锦旗赠语
2015/06/23 职场文书
学生病假条范文
2015/08/17 职场文书
经销商会议开幕词
2016/03/04 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android