Python中Function(函数)和methon(方法)

来源:互联网 发布:mac休眠后无法唤醒 编辑:程序博客网 时间:2024/06/08 00:04

在Python中,对这两个东西有明确的规定:

函数function —— A series of statements which returns some value toa caller. It can also be passed zero or more arguments which may beused in the execution of the body.


方法method —— A function which is defined inside a class body. Ifcalled as an attribute of an instance of that class, the methodwill get the instance object as its first argument (which isusually 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,静态方法,虽然定义在内部,并且也较方法,但是却不与任何对象联系,与从类访问方法是一样的,他们仍然是函数。

这样看来上面的定义可以改改了:
函数的定义自然不变。
方法的定义可以是这样的,与某个对象进行绑定使用的函数。注意哦。绑定不是指" ."这个符号,这个符号说实在的只有域名的作用。绑定在这里是指,会默认赋值该绑定的对象。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机卡不紧怎么办 华为平板字体小怎么办 充电口有灰尘怎么办 钥匙孔被异物堵住怎么办 音响线接触不良怎么办 耳塞孔接触不良怎么办 右耳机接触不好怎么办 华为手机密码忘怎么办 三星s6声音小怎么办 耳麦一边没声音怎么办 手机指环扣掉了怎么办 小米5跑流量怎么办 手机自动跑流量怎么办 华为p9主板漏电怎么办 三星s7内存不够怎么办 华为p9b399系统耗电怎么办 手机太卡应该怎么办 京东买东西次品怎么办 华为mate8手机用久卡顿怎么办 电话本突然丢了怎么办 去香港一天流量怎么办 华为声音没了怎么办 手机usb连不上电脑怎么办 华为说话声音小怎么办 手机帧率不稳定怎么办? 施华洛世奇项链折了怎么办 香港买首饰过关怎么办 香港花旗参被骗怎么办 香港过关珠宝盒怎么办 香港psn注册不起怎么办 魅族手机单声道怎么办 m1note屏幕反了怎么办 桌面推荐删了怎么办 vr一体机卡死了怎么办 荣耀10费电怎么办 魅蓝s6吃鸡卡顿怎么办 农村网络信号差怎么办 手机点击不明链接怎么办 华为手机wifi慢怎么办 浏览器打不开显示内存不足怎么办 华为电脑黑屏了怎么办