python类与方法与函数_Python 中的函数与类的方法
在 python 中,def 定义的函数与类中的方法有很大的不同,两者是不同的类型。
>>> def foo():
... print "foo"
...
>>> class A:
... def bar( self ):
... print "bar"
...
>>> a = A()
>>> foo
>>> a.bar
>
>>>
类中的方法是绑定方法,会具体绑定到某一类的实例。当方法被调用时,实例对象会作为第一个参数(self),被传入到方法中。
一个类中的可调用属性一直是未绑定,当类被实例化为一个对象时才绑定到某一具体实例上。所以我们可以在任何时候对类中已定义的方法进行修改。
>>> def fooFighters( self ):
... print "fooFighters"
...
>>> A.fooFighters = fooFighters
>>> a2 = A()
>>> a2.fooFighters
>
>>> a2.fooFighters()
fooFighters
在修改之前已经实例化的对象也会改变(只要它们没有覆盖自身属性)。新添加的方法会自动与实例对象进行绑定。
>>> a.fooFighters()
fooFighters
这种直接添加或修改类中的方法只能在类上进行修改,如果只想给一个实例化的对象增加方法就会产生问题。
>>> def barFighters( self ):
... print "barFighters"
...
>>> a.barFighters = barFighters
>>> a.barFighters()
Traceback (most recent call last):
File "", line 1, in
TypeError: barFighters() takes exactly 1 argument (0 given)
当把方法直接添加到一个实例对象时,函数并没有自动与与实例对象进行绑定。其仍然是一个函数类型,而不是一个绑定方法 (bound method)。
>>> a.barFighters
我们可以使用 types 模块中的 MethodType 函数显示绑定函数到某一个实例对象上。
>>> import types
>>> a.barFighters = types.MethodType( barFighters, a )
>>> a.barFighters
>
>>> a.barFighters()
barFighters
这样修改只改变了实例 a 的方法,不会影响到其他实例。
python类与方法与函数_Python 中的函数与类的方法相关推荐
- python中的方法什么意思_python中的函数和方法的区别是什么
python中的函数和方法的区别: 1.函数要手动传self,方法不用传self. 2.如果是一个函数,要用类名去调用,如果是一个方法,要用对象去调用. 举例说明:class Foo(object): ...
- python返回绝对值的函数_Python中用于返回绝对值的abs()方法
Python中用于返回绝对值的abs()方法 方法abs() 返回x的绝对值,-x-零之间的(正极)的距离. 语法 以下是abs()方法的语法: abs( x ) 参数 x -- 这是一个数值表达式 ...
- python取两位小数点的函数_python中round函数保留两位小数的方法
在我们日常计算的过程中,如果计算出小数,对大量的被保留数据,采用四舍五入这种保留法的误差总和是最小的,能使被保留部分的与实际值差值不超过最后一位数量级的二分之一.四舍五入是一种精确度的保留法,是我们使 ...
- python中choice函数_Python中choice函数的实现方法
Python中choice函数的实现方法 发布时间:2020-12-15 09:28:06 来源:亿速云 阅读:82 作者:小新 这篇文章主要介绍Python中choice函数的实现方法,文中介绍的非 ...
- python中保留两位小数的函数_python中round函数保留两位小数的方法
在我们日常计算的过程中,如果计算出小数,对大量的被保留数据,采用四舍五入这种保留法的误差总和是最小的,能使被保留部分的与实际值差值不超过最后一位数量级的二分之一.四舍五入是一种精确度的保留法,是我们使 ...
- python dict(zip)函数_python中zip()函数遍历多个列表方法
在对列表的元素进行找寻时,会频繁的说到遍历的理念.对于复杂的遍历要求,如多个列表中查找就显然不适合用for循环.本篇所要带来的是zip() 函数的方法,能够对多个迭代器进行遍历.下面我们就python ...
- python中的translate函数_python中翻译功能translate模块实现方法
现如今,各个国家交流密切,通过翻译使我们打破了语言壁垒,而翻译在互联网上的存在也尤为普遍.python中执行翻译操作的包是translate包,通过下载安装translate包,使用translate ...
- python中的类怎么定义怎么用_python中怎么定义一个类
什么是类? 类用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下:clas ...
- pythonlower函数_python中lower函数实现方法及用法讲解
之前小编介绍过python中将字符串小写字符转为大写的upper函数的使用方法(upper函数).有将小写转为大写的需要,那也有将大写转为小写的情况.本文主要介绍在python中可以将字符串大写自摸转 ...
- python计时器timeit返回秒数_python中的计时器timeit的使用方法
本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下: timeit 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过pytho ...
最新文章
- Socket异步通信——使用SocketAsyncEventArgs
- Appium定位方式总结
- 3.vector实现字符串类
- 快手2020校园招聘秋招笔试--工程B试卷
- 世界正在走向实时化,谈谈Twitter对流处理的理解与思考
- 无法解析此远程名称: 'www.***.com' 解决办法(转)
- (bfs)连连看(hdu1175)
- 非阻塞式JavaScript脚本介绍
- 搜索引擎广告计费系统如何防恶意点击
- JavaWeb使用cookie实现记住密码,密码加密
- ISO国家和地区代码
- 阿里高效沟通的秘密:向上沟通,跨部门沟通,PREP汇报...这5招绝了!
- Mac苹果电脑怎么创建加密文件夹
- GetLastError 错误代码
- 关于传递函数的频率响应和低通滤波器
- android的APEX接口实现,Apex API 请求
- history路由下,Whitelabel Error Page错误
- 社区发现之标签传播算法(LPA)
- 显著性物体检测与分割
- python彼岸图网爬取1200像素预览图
热门文章
- 设计模式(十四):适配器模式
- 【cs229-Lecture8】顺序最小优化算法
- 关于CentOS 7(Linux)下 软件|脚本 的自启动
- C++ popcount()含义
- 深入剖析Android音频(二)AudioSystem
- 跟我学习Storm_Storm基本架构
- Android OTA升级(1):编译升级全包
- linux如何写一个daemon程序
- 解决Nginx环境下wordpress设置固定链接打开失败问题
- rust如何加好友steam_《Rust》加入女性建模 角色性别将由STEAM账号决定