实现自定义字符串方法

时间:2010-12-23 14:38:44

标签: python

如何向内置python数据类型添加自定义方法?例如,我想实现this question中的一个解决方案,但可以按如下方式调用它:

>>> s = "A   string  with extra   whitespace"
>>> print s.strip_inner()
>>> A string with extra whitespace

那么如何定义自定义.strip_inner()字符串方法?

3 个答案:

答案 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