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根据区号生成手机号码的方法
Jul 08 Python
Python内置函数 next的具体使用方法
Nov 24 Python
django的登录注册系统的示例代码
May 14 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
python下载库的步骤方法
Oct 12 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
Pycharm修改python路径过程图解
May 22 Python
python和php学习哪个更有发展
Jun 17 Python
openCV提取图像中的矩形区域
Jul 21 Python
PyQt5的相对布局管理的实现
Aug 07 Python
Python实现自动签到脚本功能
Aug 20 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
php比较两个绝对时间的大小
2014/01/31 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
js继承的实现代码
2010/08/05 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
Python实现控制台输入密码的方法
2015/05/29 Python
python处理二进制数据的方法
2015/06/03 Python
Python实现登录接口的示例代码
2017/07/21 Python
python语言基本语句用法总结
2019/06/11 Python
Python如何调用JS文件中的函数
2019/08/16 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
环境科学专业个人求职信
2013/12/15 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
挂靠协议书
2015/01/27 职场文书
单位接收函范文
2015/01/30 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
创业计划书介绍
2019/04/24 职场文书
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL