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 相关文章推荐
Django Admin实现上传图片校验功能
Mar 06 Python
结合Python的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
python PyTorch预训练示例
Feb 11 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
Python 处理图片像素点的实例
Jan 08 Python
python获取点击的坐标画图形的方法
Jul 09 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
Python 实现集合Set的示例
Dec 21 Python
pandas提升计算效率的一些方法汇总
May 30 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP4.04简明安装
2006/10/09 PHP
PHP执行速率优化技巧小结
2008/03/15 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
Python绘制数码晶体管日期
2021/02/19 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
Ejb技术面试题
2015/04/29 面试题
体育老师的教学自我评价分享
2013/11/19 职场文书
法学求职信
2014/06/22 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL