马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 向西而笑 于 2017-8-24 16:53 编辑
课时42-43:算术运算 工厂函数:所谓的工厂函数就是类对象,调用工厂函数时就是生成了一个类实例对象。可以用type()函数来查看其本质,如:
- >>> type(str)
- <class 'type'>
- >>> type(list)
- <class 'type'>
- >>> type(dict)
- <class 'type'>
- >>> type(tuple)
- <class 'type'>
- >>> class A:
- pass
- >>> type(A)
- <class 'type'>
复制代码
python提供了一些魔法方法自定义数值处理,通过对这些魔法方法的重写来自定义任何对象间的算术处理,当进行数值计算时就会自动地调用相应的魔法方法。 举一些例子说明:
算术运算符:__add__(self,other)和__sub__(self,other)分别是进行加和减计算处理的魔法方法。下面的例子通过重写这两个魔法方法把加和减的功能调换了:
- >>> class X(int):
- def __add__(self,other):
- return int.__sub__(self,other)
- def __sub__(self,other):
- return int.__add__(self,other)
- >>> a = X(100)
- >>> b = X(10)
- >>> a - b
- 110
- >>> a + b
- 90
复制代码 其他魔法方法使用方法也是如此。
反运算:本来应该是运算符左边的主动去‘处理’右边的,由于某些原因左边不支持运算就只能右边的主动了。比如a – b就是从a中减去b。但是如果a‘无能’,那就是从b中减去a。
- >>> class X(int):
- def __rsub__(self,other):
- print('好吧,我来当攻!')
- return int.__rsub__(self,other)
-
-
- >>> a = X(100)
- >>> a - 10
- 90
- >>> 10 - a
- 好吧,我来当攻!
- -90
复制代码
增量运算符和一元操作符 和a = a +1简化写成a += 1一样操作的魔法方法叫做增量运算。 复习一下‘一元’的意思:即只有一个操作数的叫做一元操作符。例如:
- >>> class X(int):
- def __abs__(self):
- print('抱死你...')
- return int.__abs__(self)
- >>> a = X(-10)
- >>> abs(a)
- 抱死你...
- 10
复制代码
|