实现自定义字符串方法

10 投票
3 回答
3915 浏览
提问于 2025-04-16 08:57

你怎么给Python内置的数据类型添加一个自定义的方法呢?比如,我想实现一个解决方案,来自于这个问题,但我希望能够像下面这样调用它:

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

那么我该如何定义一个自定义的.strip_inner()字符串方法呢?

3 个回答

1

你不能给内置类添加方法。但是,使用函数有什么问题呢?strip_inner(s) 这样用是完全可以的,也符合 Python 的风格。

如果你需要多态性(就是让不同类型的对象可以用同样的方法处理),那么可以用 if isinstance(obj, type_) 来判断该怎么做。或者,如果你想要更灵活的方式,可以使用一些通用的函数库,比如 PEAK-Rules

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
7

你不能这样做。而且你也不需要这样做。

可以看看 在Python中扩展内置类,那里有其他的解决办法。这里推荐使用子类化的方法。

撰写回答