请问这道题为啥报错?
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__ 字符串相减的操作。 题目是:0. 我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常。因此,现在我们要求定义一个 Nstr 类,支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串。 继承str
class Nstr(str):
def __sub__(self, other):
content = ''.join(self.split(other))
return content
a = Nstr('I love FishC.com!iiiiiiii')
b = Nstr('i')
print (a - b)
阿奇_o 发表于 2021-7-18 11:18
1. 你没定义,没 "重写"__init__() ,故 在构造该类对象时,不接受任何参数 takes no arguments
2. 也不 ...
感谢{:9_231:} 逃兵 发表于 2021-7-18 11:20
继承str
感谢{:9_231:}
页:
[1]