可能的重复:
我可以将自定义方法/属性添加到内置的Python类型吗?
在整个使用python的整个过程中,我都看到了许多可以在诸如.lower()
或.startswith()
或.endswith()
之类的字符串上使用的东西,但是,我不确定如何制作与它相似的功能,就像我认为必须使用的那样将字符串传递到功能的类,我只是想做诸如"the string".myfunc()
而不是MyClassObjWithString.myfunc()
之类的事情。
有什么方法可以做出这样的函数?
在python中,字符串文字始终为basestring
类型(或PY3K中的str
)。因此,您不能将方法添加到字符串文字中。您可以创建一个接受构造函数中字符串的类,并具有可能有用的方法:
MyClass("the string").myfunc()
当然,然后可能会说您应该写一个函数:
myfunc("the string")
您无法编写可以使用的函数
"the string".myfunc()
因为那意味着修改字符串类。但是,为什么不写一种可以做的方法
myfunc("the string")
之类的东西 def myfunc(s):
return s * 2
这些是方法,虽然您可以在定义后将方法添加或替换为(某些)类 - 一种称为monkey -patching的练习 - 在内置类中,它是高度灰心的,并且无法实现。
只使用函数。