版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Einstellung/article/details/82146110
我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常。因此,现在我们要求定义一个 Nstr 类,支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串
示例如下:
>>> a = Nstr('I love FishC.com!iiiiiiii')
>>> b = Nstr('i')
>>> a - b
'I love FshC.com!'
实现:
class Nstr(str):
def __sub__(self, other):
return self.replace(other, '')
定义一个类 Nstr,当该类的实例对象间发生的加、减、乘、除运算时,将该对象的所有字符串的 ASCII 码之和进行计算
示例如下:
>>> a = Nstr('FishC')
>>> b = Nstr('love')
>>> a + b
899
总共有两种实现方法:
第一种
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
这里告诉我们self的确只是一个表明身份的符号。
第二种:
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)
继承int,但是赋予int不具备的新的功能。