分享知识 传递快乐
在 Python 中一直以来都以为函数(function)和方法(method)是一个东西,但后来发现两者是不一样的,那么两者之间有什么区别呢?先看段代码:
代码1:
def fun():
pass
print(fun)
结果如下:
<function fun at 0x000000000248A820>
代码2:
class Demo():
def fun1(self):
pass
@classmethod
def fun2(cls):
pass
@staticmethod
def fun3(self):
pass
demo = 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) |
---|---|
方便复用 | 不宜复用,容易出错 |
方便扩展 | 升级、扩展,都十分复杂 |
方便维护 | 不便维护 |
——————————
如有不足请留言指正
相互学习,共同进步