马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|