在使用 Python 的过程中,我看到了许多可以在字符串上使用的东西,例如.lower()
or.startswith()
或.endswith()
,但是,我不确定如何制作与其相似的函数,因为我认为必须使用一个传递字符串的类到函数,我只是想做一些类似的事情,"the string".myfunc()
而不是MyClassObjWithString.myfunc()
.
有没有办法制作这样的功能?
在使用 Python 的过程中,我看到了许多可以在字符串上使用的东西,例如.lower()
or.startswith()
或.endswith()
,但是,我不确定如何制作与其相似的函数,因为我认为必须使用一个传递字符串的类到函数,我只是想做一些类似的事情,"the string".myfunc()
而不是MyClassObjWithString.myfunc()
.
有没有办法制作这样的功能?
在 python 中,字符串文字总是类型basestring
(或str
在 py3k 中)。因此,您不能向字符串文字添加方法。您可以创建一个在构造函数中接受字符串并具有可能有用的方法的类:
MyClass("the string").myfunc()
当然,那么可能会争辩说您应该编写一个函数:
myfunc("the string")
你不能写一个你可以做的函数
"the string".myfunc()
因为这意味着修改字符串类。但是为什么不写一个你可以做的方法
myfunc("the string")
就像是
def myfunc(s):
return s * 2
这些是方法,虽然您可以在定义(某些)类之后添加或替换方法 - 这种做法称为猴子补丁 - 强烈建议不要使用内置类并且不可能使用内置类。
只需使用一个功能。