|  | 
 
8鱼币 
| 复制代码class Nstr:
    def __sub__(self, other):
        content = ''.join(self.split(other))
        return content
a = Nstr('I love FishC.com!iiiiiiii')
b = Nstr('i')
print (a - b)
 
 
 报错为:Traceback (most recent call last):
 File "D:/python project/第四十二节课/定义类,支持字符串相减.py", line 10, in <module>
 a = Nstr('I love FishC.com!iiiiiiii')
 TypeError: Nstr() takes no arguments
 
 
 本帖最后由 阿奇_o 于 2021-7-18 12:13 编辑 
 1. 你没定义,没 "重写"__init__() ,故 在构造该类对象时,不接受任何参数 takes no arguments
 
 2. 也不一定要重写__init__,因为若你继承了 str, 即 写 class Nstr(str): ...
 那么 构造对象时,会调用父类str的__init__()生成字符串对象。
 有了字符串对象,即 self, 就可以调用 .split()方法,进而实现 __sub__ 字符串相减的操作。
 | 
 
最佳答案
查看完整内容 1. 你没定义,没 "重写"__init__() ,故 在构造该类对象时,不接受任何参数 takes no arguments
2. 也不一定要重写__init__,因为若你继承了 str, 即 写 class Nstr(str): ... 
     那么 构造对象时,会调用父类str的__init__()生成字符串对象。
    有了字符串对象,即 self, 就可以调用 .split()方法,进而实现 __sub__ 字符串相减的操作。 |