您的位置:首页 > 其它

调用未绑定的父类方法和使用supper 函数 之间的选择.

2016-07-16 21:58 393 查看
class New_int(int):   # 定义一个新的类  继承 int 类
def __add__(self,other):   # 重写 + 运算符 # __add__ 就是 int 中 +  的行为
return int.__sub__(self,other)    # 重写的 加法运算符 调用 int类 里面的 减法运算运算符

def __sub__(self,other):
return int.__add__(self,other)

# 上面的是一个小小的恶作剧 . 把加法和减法的名称进行了互换.


>>> a=New_int(5)
>>> b=New_int(3)
>>> a+b
2


上面的是调用未绑定的父类方法.

下面是使用super函数

class New_int(int):   # 定义一个新的类  继承 int 类
def __add__(self,other):   # 重写 + 运算符 # __add__ 就是 int 中 +  的行为
return super.__sub__(self,other)    # 重写的 加法运算符 调用 int类 里面的 减法运算运算符

def __sub__(self,other):
return super.__add__(self,other)

# 上面的是一个小小的恶作剧 . 把加法和减法的名称进行了互换.


=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
>>> a=New_int(5)
>>> b=New_int(3)
>>> a+b
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
a+b
File "C:/Users/Administrator/Desktop/new.py", line 3, in __add__
return super.__sub__(self,other)    # 重写的 加法运算符 调用 int类 里面的 减法运算运算符
AttributeError: type object 'super' has no attribute '__sub__'


可见当使用super的时候 报错提示 super中没有__sub__ .......然而我不知道为什么会这样 . 网上没找到相关资料 . 等学的多了 ,再来看看 .

class int(int):
def __add__(self,other):
return int.__sub__(self,other)

'''def __sub__(self,other):
return int.__add__(self,other)'''
#   上面的 两个重写只能在同一时间内重写一个 , 不然的话  , 就会报错.....
#   当写第二个的  add 的时候 系统不知道 会认为是 你重写的 add 然后程序就崩溃了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: