包装Python`str`,以便在运算符

时间:2017-10-21 21:07:36

标签: python python-3.x object inheritance extend

我希望“包装”或扩展Python str,以便为我的问题添加一些功能。

class Wrap(str):

     def custom_interface(self):
         pass

class Wrap(object):

    def __init__(self, value):
        """initiate with a str
        """
        self._value = value

    def custom_interface(self):
        pass

我希望在str上定义并返回str __rmul__join等。的常用运算符和功能, Wrap并返回Wrap个对象,例如:

>>> w = Wrap('foo') # wrap any `str`
>>> type(w)
<class 'Wrap'>

>>> t = w * 2 # use a `str` operator on `Wrap`
>>> t
'foofoo'
>>> type(w * 2)
<class 'Wrap'>

>>> j = Wrap('.').join(['b', 'a', 'r']) # use `str` interface on `Wrap`
>>> j
'b.a.r'
>>> type(j)
<class 'Wrap'>

>>> j.custom_interface() # and still enjoy dedicated interface

在避免__rmul__join的所有样板重新实现的情况下,有什么办法可以解决这个问题吗?

0 个答案:

没有答案