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的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
浅谈python 里面的单下划线与双下划线的区别
Dec 01 Python
python多线程下信号处理程序示例
May 31 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
python绘制彩虹图
Dec 16 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php类的定义与继承用法实例
2015/07/07 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
yii2安装详细流程
2018/05/23 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
Prototype Number对象 学习
2009/07/19 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
python 中的列表解析和生成表达式
2011/03/10 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python的gevent框架的入门教程
2015/04/29 Python
使用Python写一个小游戏
2018/04/02 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
计算机软件个人的自荐信范文
2013/12/01 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
开除员工通知
2015/04/22 职场文书
婚姻出轨保证书
2015/05/08 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript