|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 醉酒青牛 于 2015-11-30 20:02 编辑
小牛有话说:
各位鱼油,大家好。我是小牛,如果您已经看完或者正在看鱼神的《零基础入门学习Python》视频,想随时复习前面的知识点却又不想花太多时间和精力重翻视频,来这里《零基础入门Python学习》整理瞅瞅小牛呕心做的的视频内容的总结吧^_^,如果觉得有用的话,可以点击所属淘贴右上角的“订阅”按钮,这样以后就能够随时看到小牛做的最新的整理了。
年底恰逢各种项目结题,近两周内没有时间和精力更新帖子,这里对关注小牛帖子鱼油们说声抱歉了,后面小牛会尽力加快更新速度,争取在11月份更完类和对象部分。
本期主要内容导读:
这一期我们归纳一下鱼神第四十二讲“类和对象:算术运算符”。这一期里面鱼神主要是介绍了Python类中无处不对像的含义,首先是工厂函数的本质概念,接着介绍了魔法方法中关于算术运算符的相关魔法方法。下面将详细介绍他们的用法。
1. 工厂函数的本质
在Python2.2版本之前,类和类型是分开的,我们所说的整数,浮点数和字符串都是类型,是通过一个强制转换函数来实现他们之间的转换的;而2.2版本之后,int,float,str不再是一个简单的函数了,而是一个工厂函数即类对象。a = int("123") b = int("456") 的含义变为将int类实例化对象为a 和 b ,而且 a+b会自动调用算术运算求和的魔法方法__add__(self,other)来实现,举例说明:
>>> class New_int(int):
def __add__(self,other):
print("正在调用__add__方法...")
return int.__sub__(self,other)
def __sub__(self,other):
print("正在调用__sub__方法...")
return int.__add__(self,other)
>>> char1 = "1"
>>> char3 = "3"
>>> int1 = int(char1)
>>> int3 = int(char3)
>>> int1+int3
4
>>> int1-int3
-2
>>> newint1 = New_int(char1)
>>> newint3 = New_int(char3)
>>> newint1 + newint3
正在调用__add__方法...
-2
>>> newint1 - newint3
正在调用__sub__方法...
4
当然,上述方法我们是通过调用int类的魔法方法来实现我们的New_int的加减运算符的魔法方法的,我们可以完全重新定义自己的魔法方法,但是需要注意进入无限递归Bug里面,这里我们通过在将其转换为int 类来实现前面同样的功能,举例说明:
>>> class New_int(int):
def __add__(self,other):
print("正在调用__add__方法...")
return int(self) - int(other)
def __sub__(self,other):
print("正在调用__sub__方法...")
return int(self) + int(other)
>>> new_int1 = New_int("1")
>>> new_int3 = New_int("3")
>>> new_int1 + new_int3
正在调用__add__方法...
-2
>>> new_int1 - new_int3
正在调用__sub__方法...
4
2. 算术运算符其他魔法方法概述
__mul__(self,other) 定义乘法的行为
__truediv__(self,other) 定义真除法的行为
__flooddiv__(self,other) 定义整数除法的行为
__mod__(self,other) 定义取模算法的行为
__divmod__(self,other) 定义当被divmod()调用时的行为,返回一个由整数除法和取模运算的结果的元组
__pow__(self,other) 定义当被power()调用或**运算的行为。
|
|