Python中Function(函数)和methon(方法)
来源:互联网 发布:程序员面试技巧 知乎 编辑:程序博客网 时间:2024/06/09 17:05
在Python中,对这两个东西有明确的规定:
函数function —— A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.
方法method —— A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).
从定义的角度上看,我们知道函数(function)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。所以普通的在module中定义的称谓函数是很有道理的。
那么方法的意思就很明确了,它是与某个对象相互关联的,也就是说它的实现与某个对象有关联关系。这就是方法。虽然它的定义方式和函数是一样的。也就是说,在Class定义的函数就是方法。
从上面的角度看似乎很有道理。
>>> def fun():
pass
>>> type(fun)
<class 'function'> #没有问题
>>> class Cla():
def fun():
pass
@classmethod
def fun1(cls):
pass
@staticmethod
def fun2():
pass
>>> i=Cla()
>>> Cla.fun.__class__
<class 'function'> #为什么还是函数
>>> i.fun.__class__ #这个还像话
<class 'method'>
>>> type(Cla.fun1)
<class 'method'> #这里又是方法
>>> type(i.fun1)
<class 'method'> #这里仍然是方法
>>> type(Cla.fun2)
<class 'function'> #这里却是函数
>>> type(i.fun2)
<class 'function'> #这里却是函数
事实上,上面的结果是可以解释的:
1,普通方法(老版中直接就是"instancemethod")在module中与在Class中定义的普通函数,从其本身而言是没有什么区别的,他们都是对象函数属性。 之所以会被说在Class中的定义的函数被称为方法,是因为它本来就是面向将来的实例对象的,其实他们就是实例方法,这些方法是与实例相联系的(从实例出发访问该函数会自动赋值)。所以你从Class访问仍然是一个函数
2,类方法("classmethod"),因为类同样是对象,所以如果函数与类进行联系了话(与实例方法一样的模式)那么就能够这么说了!
3,静态方法,虽然定义在内部,并且也较方法,但是却不与任何对象联系,与从类访问方法是一样的,他们仍然是函数。
这样看来上面的定义可以改改了:
函数的定义自然不变。
方法的定义可以是这样的,与某个对象进行绑定使用的函数。注意哦。绑定不是指" . "这个符号,这个符号说实在的只有域名的作用。绑定在这里是指,会默认赋值该绑定的对象。
- Python中Function(函数)和methon(方法)
- Python中Function(函数)和methon(方法)
- 转 Python中Function(函数)和methon(方法)
- Python中Function(函数)和methon(方法)
- Python中Function(函数)和methon(方法)
- Python中Function(函数)和methon(方法)
- Python中Function(函数)和methon(方法)
- Python函数(function)与方法(method)区别
- Python的函数和方法装饰漫谈(Function decorator)
- 方法(method)和函数(function)的区别
- Verilog中任务(task)和函数(function)
- 我所理解的Python里method和function的区别(关键词:method/方法/function/函数)
- oracle 中函数(function)的学习
- javascript 中函数的调用:直接调用函数和new function()区别
- 在python中调用自己写的方法或函数function
- Python中如何避免使用多个分支语句(多个if和else)——函数字典(Function Map)简介
- Function:--js中创建函数的方法
- 设计模式 笔记 工厂方法 Factory Methon
- 存储过程还是业务逻辑层
- 跟我一起写 Makefile(一)
- 【vm虚拟机】VMware 提供四种网络连接方式
- 黑马程序员:操作基本数据类型的流对象DataStream
- 需要进行c++ string字串"\\"的替换时
- Python中Function(函数)和methon(方法)
- 并查集
- 作为一名合格的Linux程序员,我们应当读那些书呢?????
- 安卓渠道汇-为安卓应用推广者而生
- 当我每敲击一行代码时,我会想到的(稍微夸张了一些)
- 一些常用的场景进行描述分析(权限管理、6个典型场景)
- zoj3573 Under Attack (线段树)
- 希望这些建议,能推动管理软件开发的规范化进程 (当前操作员类BaseUserInfo)
- 面试题