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中global用法实例分析
Apr 30 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
pyQt5实时刷新界面的示例
Jun 25 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
python实现横向拼接图片
Mar 23 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Python基础教程(一)——Windows搭建开发Python开发环境
Jul 20 Python
如何在python中实现线性回归
Aug 10 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&java(二)
2006/10/09 PHP
五个PHP程序员工具
2008/05/26 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
react中hook介绍以及使用教程
2020/12/11 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
Python中的hypot()方法使用简介
2015/05/18 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python之修改图片像素值的方法
2019/07/03 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
python pillow库的基础使用教程
2021/01/13 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
会计学自我鉴定
2014/02/06 职场文书
趣味游戏活动方案
2014/02/07 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
安全生产月演讲稿
2014/05/09 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers