|
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__ 字符串相减的操作。
|