关于类为什么要继承?
[课后作业] 第042讲 中的有的继承int,有的继承str,有的又不继承https://fishc.com.cn/forum.php?mod=viewthread&tid=51543&extra=page%3D2%26filter%3Dtypeid%26typeid%3D398
第一段代码:
class Nstr(str):
def __lshift__(self, other):
return self + self[:other]
def __rshift__(self, other):
return self[-other:] + self[:-other]
第二段代码:
class Nstr:
def __init__(self, arg=''):
if isinstance(arg, str):
self.total = 0
for each in arg:
self.total += ord(each)
else:
print("参数错误!")
def __add__(self, other):
return self.total + other.total
def __sub__(self, other):
return self.total - other.total
def __mul__(self, other):
return self.total * other.total
def __truediv__(self, other):
return self.total / other.total
def __floordiv__(self, other):
return self.total // other.total
第三段代码:
class Nstr(int):
def __new__(cls, arg=0):
if isinstance(arg, str):
total = 0
for each in arg:
total += ord(each)
arg = total
return int.__new__(cls, arg) 可以减少代码量 继不继承看具体需求 是否继承一个类主要看你的需求来决定。
如果说你写了一个类,里面有一些功能是别的类已经有的,他们的实现思路和实现过程都符合你的要求,这时候最省事的办法就只有两个。一个是直接把你需要的源代码复制过来,直接用。另一个就是用类的继承。把别的类的方法继承过来,你就可以直接用了。第一个方法的缺点是特别low,会有代码冗余的问题。第二个就省事多了。
另外就是子类可以继承多个父类,也就意味着一个子类可以用好几个父类的方法,这样除了节省代码以外,还能进行方法的组合产生新的方法。大大节省开发时间。 本帖最后由 月照梨花 于 2020-9-28 18:21 编辑
class Nstr(str):
def __sub__(self, other):
return self.replace(other, '')
如上这段代码 继承的str时 实参就必须是字符串? 继承int时实参就必须是整型? 那如果我想两者都能输入呢 可以的吗?
还有__add__这类的运算魔法方法,只能在继承str或int这类时才能调用?
页:
[1]