算数运算

版权声明:本文为博主原创文章,未经博主允许不得转载。 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不具备的新的功能。


猜你喜欢

转载自blog.csdn.net/Einstellung/article/details/82146110
今日推荐