我希望“包装”或扩展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
,等的所有样板重新实现的情况下,有什么办法可以解决这个问题吗?