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实现的ini文件操作类分享
Nov 20 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
python实现七段数码管和倒计时效果
Nov 23 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 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缓存技术的使用说明
2011/08/06 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
python实现2048小游戏
2015/03/30 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
python实现用户登录系统
2016/05/21 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
python2.7到3.x迁移指南
2018/02/01 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
商务英语专业求职信范文
2014/01/28 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
公司晚会策划方案
2014/05/17 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
教师节老师寄语
2015/05/28 职场文书
学校财务管理制度
2015/08/04 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS