Python中Function(函数)和method(方法)
在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(函数)和method(方法)相关推荐
- Python中range函数的使用方法
Python中range函数的使用方法 更新时间:2022年05月30日 11:38:15 作者:Python编程学习圈 这篇文章主要介绍了Python中range函数的使用方法,文章基于Pyth ...
- 技术图文:举例详解Python中 split() 函数的使用方法
背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...
- python中sum函数的使用方法及实例_sum函数的使用方法及实例
在我很重要的人.QQ相册上看到的英文. BRO有以下两种意思: 1.BRO是brother的简称,意思是兄弟,哥们.是口语中的简称.类似的还有"sister"姐妹的简称为" ...
- Python中range()函数的使用方法
range()函数可以产生一系列的数字.当需要叠加一些数字时,可以用到range()函数. 1 基本语法 range()函数的基本语法如下所示. range(start, stop) 其中,start ...
- Python中Function(函数)和methon(方法)
首先来看他们的定义, 函数function -- A series of statements which returns some value to a caller. It can also be ...
- python中function函数的用法_Python中Function(函数)和methon(方法)
在Python中,对这两个东西有明确的规定: 函数function -- A series of statements which returns some value toa caller. It ...
- python中if函数的使用方法_(for i in range) (else) (if)使用方法
条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: [图片上传失败...(image-ef7ddf- ...
- python中find函数的使用方法_Python教程-String 字符串使用教程
Python 语言中的String 在Python中,String代指以下特点: 代表Unicode字符的字节数组 用单引号或双引号引起来 无限长度 Python 中 String 字符串定义方式 $ ...
- Python中lambda函数的使用方法
在进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量.但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数.该函数就是Python中的Lambda函数,下面 ...
最新文章
- python中对象及对象引用--傻傻分不清
- linux下的last以及lastb命令
- sql中常用的几种连接
- python做毕业设计选题_软妹子的毕业设计:用Python制作防盗门系统!
- vaex 处理海量数据_Vaex真香!几秒钟就能处理数十亿行数据,比Pandas、Dask更好用...
- Lily have a dog
- GDALSetProjection使用的一个注意事项
- 图画日记怎么画_期末到了,孩子不会复习,可以试试画思维导图的方法
- HTML5前端开发实战04-儿童摄影
- C++if语句进行分段函数计算
- jzoj6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
- cdh 添加jar包_hive引入jar包--HIVE.AUX.JARS.PATH和hive.aux.jars.path
- 基本概念:节点、集群、分片及副本
- 电脑一些基础知识(一)
- ASUS TUF GAMING B660M PLUS WIFI D4 i5-12600K RX6650XT 黑苹果efi引导文件
- 腾讯mars xlog源码解析
- python之网络部分
- matplotlib.plt.subplot()用法
- 韦东山第1期-学习笔记-4
- 2014年十大最失意的科技大佬:最差CEO揭晓
热门文章
- XCTF-高手进阶区:i-got-id-200
- 计算机与新闻业未来发展,计算机学院举办“智创未来,谈思维与职业发展”活动...
- python生成器推导式的结果是一个什么类似于对象_python 生成器和推导式
- 解决安卓模拟器没有网络的问题,刚开的做RN的我遇见这个问题真很头疼,所以希望看到我这篇文章能够解决。
- 三维重建7:Visual SLAM算法笔记
- 算法设计之—常用算法之-分支界定法
- php 科研,科研之路2
- 7月10日任务 添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理...
- highlight js 为博客增加代码着色
- linux命令之userdel