分享知识  传递快乐

在 Python 中一直以来都以为函数(function)和方法(method)是一个东西,但后来发现两者是不一样的,那么两者之间有什么区别呢?先看段代码:

代码1:

def fun():passprint(fun)

结果如下:

<function fun at 0x000000000248A820>

代码2:

class Demo():def fun1(self):pass@classmethoddef fun2(cls):pass@staticmethoddef fun3(self):passdemo = Demo()
print(demo)
print(demo.fun1)
print(demo.fun2)
print(demo.fun3)

结果如下:

<__main__.Demo object at 0x00000000006BE3D0>
<bound method Demo.fun1 of <__main__.Demo object at 0x00000000006BE3D0>>
<bound method Demo.fun2 of <class '__main__.Demo'>>
<function Demo.fun3 at 0x0000000002631E50>

由此得出:

  • 在class内定义的普通方法(fun1),因为它是要面向实例化对象的一个实例方法。
  • 在class内定义的类方法(fun2),它第一个参数必须是cls,并与class本身是绑定关系,它也属于方法,但不属于实例方法,可以被实例对象调用。
  • 在class内定义的静态方法(fun3),它与任何对象都没有联系,等同于是在class外定义的function,它属于函数。

还可以理解为与类或实例有绑定关系的 function 称之为方法(method),否则叫函数。

类(class)与函数(function)的区别:

类(class):类是面向你对象的,class可以保存一此属性的状态,同时也起到模板的作用,把一些通用的东西写进类定义中,也就是在'__init__'中。class有点像是将多个函数进行功能性封装

函数:函数更像是面向过程编程,更易理解,但是当系统较大时,重复性就会增多。

类(class)与函数(function)的优劣势:

类(class) 函数(function)
方便复用 不宜复用,容易出错
方便扩展 升级、扩展,都十分复杂
方便维护 不便维护

——————————
如有不足请留言指正
相互学习,共同进步

Python中类(class)与函数(function)的区别相关推荐

  1. 混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解

    混淆概念详细解析:Python中类.对象.方法.函数和属性的区别和理解 前言 一.类.对象.方法.函数和属性的区别和理解 二.一个类的简单案例和对各种概念的理解 三.总结 欢迎学习交流! 邮箱: z- ...

  2. python中递归函数的基例_详谈Python基础之内置函数和递归 Python递归和循环的区别...

    Python 递归函数基例 2. 关于递归函数基例的说明,以下选项中错误的是 A 递归函数的基例决定所谓基例就是不需要递归就能求解的,一般来说是问题的最小规模下的解. 例如:斐波那契数列递归,f(n) ...

  3. Python核心:5. 容器类型和6.函数function

    5. 容器类型 5.1 通用操作 5.1.1 数学运算符 运算符 说明 + 用于拼接两个容器 += 用原容器与右侧容器拼接,并重新绑定变量 * 重复生成容器元素 *= 用原容器生成重复元素, 并重新绑 ...

  4. python中remove函数是什么意思,python中pop函数和remove函数有什么区别

    python中pop函数和remove函数有什么区别 发布时间:2020-12-10 09:36:18 来源:亿速云 阅读:80 作者:小新 小编给大家分享一下python中pop函数和remove函 ...

  5. python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...

    本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...

  6. Python编程基础:第二十节 函数Function

    第二十节 函数Function 前言 实践 前言 目前为止,我们已经学习了常见的数据类型以及逻辑结构.但是代码都只能运行一次,如果想多次运行该段代码就得重复写多次.为了避免书写冗余的代码,我们需要引入 ...

  7. Python 中各种imread函数的区别与联系

    Python 中各种imread函数的区别与联系 最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误.如 ...

  8. 数据库系列之mysql 自定义函数function,函数和存储过程的区别

    mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 https://blo ...

  9. Python eval 与 exec 函数的区别 - Python零基础入门教程

    目录 一.Python eval 与 exec 函数的区别 二.价值 10 个亿的智能机器人核心代码 三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Py ...

  10. Python reduce / map / filter 函数区别 - Python零基础入门教程

    目录 一.map 函数 二.reduce 函数 三.filter 函数 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Pyth ...

最新文章

  1. linux的挂载命令
  2. 破一个行业ERP的感想
  3. eclipse 鲜为人知的调试技巧,你用过多少
  4. 【Paper】英文论文写作小技巧
  5. 让人惊叹的Johnson-Lindenstrauss引理:理论篇
  6. 赋值运算符 += 面试题小陷阱
  7. sensei鼠标测试软件,'黑科技'传感器打造出的FPS利器 - 赛睿Sensei 310 鼠标
  8. python split函数 空格_最易懂的Python新手教程:从基础语法到代码详解
  9. java基础方法笔记
  10. 前端集合删除对象_【两万字】面试官:听说你精通集合源码,接我二十个问题!...
  11. saltstack 自动化运维神器(四)salt-ssh
  12. JS获取IP、MAC和主机名的五种方法
  13. matlab中的全局参量,matlab参数传递及全局变量 | 学步园
  14. 金山也推隐私保护器,我的隐私谁做主?
  15. php里pluck,pluck - 内容管理CMS - PHP开源项目 - 开源吧
  16. PHP上传ZIP压缩包并解压
  17. Ubuntu20.04安装NVIDIA显卡驱动、CUDA、CUDNN及突破NVENC并发限制
  18. 台式计算机如何拆硬盘,机械硬盘怎么拆开?台式机3.5英寸机械硬盘拆卸方法图文教程...
  19. e.CommandArgument值的设定
  20. 孙陶然:成功者都不找借口

热门文章

  1. html5 红包页面,利用HTML5实现手机触屏接红包代码
  2. Ubuntu配置网卡信息(ip、网关、子网掩码、dns)
  3. 御银股份(002177)首次公开发行股票网上路演公告,核心观点询价结论:御银股份 快速扩张的ATM运营龙头
  4. 10月9日学习:urlopen报错处理
  5. Teradata当年数据仓库的“一哥”为何突然退出中国市场:苦撑了3年,员工早有预料
  6. 用TELNET连接Socket服务器程序
  7. 名画176 文徵明《画卷十幅》
  8. 推荐系统——(一)经典论文文献及业界应用
  9. layui-from
  10. 【LeetCode-面试算法经典-Java实现】【198-House Robber(抢劫犯)】