如何向内置python数据类型添加自定义方法?例如,我想实现this question中的一个解决方案,但可以按如下方式调用它:
>>> s = "A string with extra whitespace"
>>> print s.strip_inner()
>>> A string with extra whitespace
那么如何定义自定义.strip_inner()
字符串方法?
答案 0 :(得分:6)
你做不到。你不需要。
有关替代解决方案,请参阅Extending builtin classes in python。子类化是去这里的方式。
答案 1 :(得分:2)
str
等内置类是用C实现的,所以你不能操作它们。相反,你可以做的是扩展str
类:
>>> class my_str(str):
... def strip_inner(self):
... return re.sub(r'\s{2,}', ' ', s)
...
>>> s = my_str("A string with extra whitespace")
>>> print s.strip_inner()
A string with extra whitespace
答案 2 :(得分:1)
您无法向内置类添加方法。但是使用函数有什么问题? strip_inner(s)
就好了和pythonic。
如果您需要多态,那么只需使用if isinstance(obj, type_)
来确定要做什么,或者使用更具可扩展性的东西,使用通用函数包,如PEAK-Rules。