OOP Python3.5内置str类扩展

时间:2016-01-04 16:44:06

标签: python string python-3.x built-in method-overriding

我已经编写了类str(内置)的以下扩展来执行以下操作:假设我有字符串“Ciao”​​,通过做“Ciao”​​ - 我想要的“a”作为结果字符串“Cio”。这是执行此操作的代码,它可以正常工作:

class my_str(str):
   def __sub__(self, other):
       p = list(other)
       l = ""
       for el in self:
           if (el in p) == False:
               l += el

       return my_str(l)

if __name__ == "__main__":
    s = my_str("Ciao")
    p = my_str("a")
    t = s - p
    print(t) # 'Cio'
    print(s) # 'Ciao'

现在..假设我希望函数__sub__直接更新对象s,以便在执行{{1}后输入print(s)时输出将是“Cio”。如何修改课程s - p

1 个答案:

答案 0 :(得分:3)

您可以使用

from collections import UserString  
class Test(UserString):
    def __add__(self, other):
        self.data = self.data + other

UserString类用于对内置字符串进行子类化,并为您提供self.data字段的实际内容。