zoukankan      html  css  js  c++  java
  • 调用未绑定的父类方法和使用supper 函数 之间的选择.

    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)
    
    
    # 上面的是一个小小的恶作剧 . 把加法和减法的名称进行了互换.
    1 >>> a=New_int(5)
    2 >>> b=New_int(3)
    3 >>> a+b
    4 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__   .......然而我不知道为什么会这样 . 网上没找到相关资料 . 等学的多了 ,再来看看 .

    1 class int(int):
    2     def __add__(self,other):
    3         return int.__sub__(self,other)
    4 
    5     '''def __sub__(self,other):
    6         return int.__add__(self,other)'''
    7 #   上面的 两个重写只能在同一时间内重写一个 , 不然的话  , 就会报错.....
    8 #   当写第二个的  add 的时候 系统不知道 会认为是 你重写的 add 然后程序就崩溃了.  
  • 相关阅读:
    渗透测试-实用版
    微观传输原理:协议、端口、套接字接口
    如何暂停和继续运行Linux程序
    QUIC:基于udp的传输新技术
    ops运维工具
    日志监控工具安装:windows上安装elk
    python实现图片隐藏信息技术
    让网站不去请求favicon.ico图标
    nginx 内核优化
    nginx 模块介绍
  • 原文地址:https://www.cnblogs.com/A-FM/p/5677325.html
Copyright © 2011-2022 走看看