鱼C论坛

 找回密码
 立即注册
查看: 1562|回复: 5

[已解决]请问这道题为啥报错?

[复制链接]
发表于 2021-7-18 11:18:00 | 显示全部楼层 |阅读模式
8鱼币
  1. class Nstr:
  2.     def __sub__(self, other):
  3.         content = ''.join(self.split(other))
  4.         return content
  5. a = Nstr('I love FishC.com!iiiiiiii')
  6. b = Nstr('i')
  7. 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
最佳答案
2021-7-18 11:18:01
本帖最后由 阿奇_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__ 字符串相减的操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-18 11:18:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 阿奇_o 于 2021-7-18 12:13 编辑

1. 你没定义,没 "重写"__init__() ,故 在构造该类对象时,不接受任何参数 takes no arguments

2. 也不一定要重写__init__,因为若你继承了 str, 即 写 class Nstr(str): ...
     那么 构造对象时,会调用父类str的__init__()生成字符串对象。
    有了字符串对象,即 self, 就可以调用 .split()方法,进而实现 __sub__ 字符串相减的操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-18 11:18:34 | 显示全部楼层
题目是:0. 我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常。因此,现在我们要求定义一个 Nstr 类,支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-18 11:20:06 | 显示全部楼层
继承str
  1. class Nstr(str):
  2.     def __sub__(self, other):
  3.         content = ''.join(self.split(other))
  4.         return content
  5. a = Nstr('I love FishC.com!iiiiiiii')
  6. b = Nstr('i')
  7. print (a - b)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-18 16:29:00 | 显示全部楼层
阿奇_o 发表于 2021-7-18 11:18
1. 你没定义,没 "重写"__init__() ,故 在构造该类对象时,不接受任何参数 takes no arguments

2. 也不 ...

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-18 16:44:57 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-15 01:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表