在python中,我有一些常用的字符串实用函数。这些包括内置方法的扩展(例如支持普通字符串和正则表达式的拆分函数),内置方法的辅助函数(例如带有参数的剥离函数,而不是三个内置的 -在功能中)和全新的功能。
我目前以独立函数的形式拥有它们,像这样:
function strip(s, left: bool = True, right: bool = True):
if left and right:
return s.strip()
elif left:
return s.lstrip()
elif right:
return s.rstrip()
else:
return s
但是,这不是很方便。内置方法是
str
类的成员,因此使用点运算符调用它们。 mystring.strip()
比strip(mystring)
更简洁方便。此外,前者与内置方法一致。
为了解决这个问题,我想使用猴子补丁。 Monkey 修补是您从类外部将自己的方法添加到类中的地方:
str.mystrip = strip
这允许以
mystring.mystrip()
的形式调用新函数。
然而,猴子补丁通常被认为是不好的做法。
那么,可以用我的自定义函数给
str
类打补丁吗?或者这是不好的做法?有更好的方法吗?
从技术上讲,另一种方式更简洁(少一个句号!)
除此之外,最好的方法可能是子类化 str 类。 您可以获得 str 的所有功能以及您想要添加的任何新功能。你可以在这里看到一些信息:https://realpython.com/inherit-python-str/#extending-the-strings-standard-behavior
他们的一个例子是:
class WordCountString(str):
def words(self, separator=None):
return len(self.split(separator))
可以看到WordCountString继承了str。然后他们定义了一个与新类型一起使用的新函数。