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调用shell的方法
Nov 20 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
基于Python的关键字监控及告警
Jul 06 Python
python 实现语音聊天机器人的示例代码
Dec 02 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
PyQt打开保存对话框的方法和使用详解
Feb 27 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
Django使用rest_framework写出API
May 21 Python
python中pivot()函数基础知识点
Jan 03 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 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 如何向 MySQL 发送数据
2006/10/09 PHP
cmd下运行php脚本
2008/11/25 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
jcrop基本参数一览
2013/07/16 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
电脑售后服务承诺书
2014/03/27 职场文书
运动会口号大全
2014/06/07 职场文书
同志主要表现材料
2014/08/21 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
工作表现证明
2015/06/15 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android