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使用MySQLdb访问mysql数据库的方法
Aug 03 Python
详解Python爬虫的基本写法
Jan 08 Python
python安装与使用redis的方法
Apr 19 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
对pandas处理json数据的方法详解
Feb 08 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
两种php调用Java对象的方法
2006/10/09 PHP
一个简易需要注册的留言版程序
2006/10/09 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
smarty中post用法实例
2014/11/28 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
sails框架的学习指南
2014/12/22 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
数控专业应届生求职信
2013/11/27 职场文书
护校行动方案
2014/05/31 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
八年级英语教学计划
2015/01/23 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
杨善洲电影观后感
2015/06/04 职场文书