制造;字符串";。函数()函数python

制造;字符串";。函数()函数python,python,function,python-2.7,Python,Function,Python 2.7,可能重复: 在使用Python的过程中,我看到了许多可以在字符串上使用的东西,例如.lower()或.startswith()或.endswith(),但是,我不确定如何使函数与之类似,因为我认为必须使用一个将字符串传递给函数的类,我只是想做一些类似于“字符串”.myfunc()的事情,而不是MyClassObjWithString.myfunc() 有什么方法可以生成这样的函数吗?您不能编写一个可以使用的函数 "the string".myfunc() 因为这意味着修改string类。但是

可能重复:

在使用Python的过程中,我看到了许多可以在字符串上使用的东西,例如
.lower()
.startswith()
.endswith()
,但是,我不确定如何使函数与之类似,因为我认为必须使用一个将字符串传递给函数的类,我只是想做一些类似于
“字符串”.myfunc()
的事情,而不是
MyClassObjWithString.myfunc()


有什么方法可以生成这样的函数吗?

您不能编写一个可以使用的函数

"the string".myfunc()
因为这意味着修改string类。但是为什么不写一个你可以使用的方法呢

myfunc("the string")
差不多

def myfunc(s):
   return s * 2

在python中,字符串文本的类型总是
basestring
(或者在py3k中是
str
)。因此,不能向字符串文本添加方法。您可以创建一个类,该类接受构造函数中的字符串,并具有可能有用的方法:

MyClass("the string").myfunc()
当然,可能会有人认为您应该编写一个函数:

myfunc("the string")

这些都是方法,虽然您可以在(某些)类被定义后向它们添加或替换方法(一种称为monkey patching的做法),但对于内置类来说,这是非常不鼓励的,也是不可能的


只需使用一个函数。

因此,我认为python没有任何“原型”机制a-la javascript,这会让您过度查看/扩展基串(对吗?)。但是您可以让MyClass从basicstring派生,这样basicstring中可用的所有方法也都可以使用。e、 g.MyClass(“字符串”).lower()?@Uri——这是正确的。抱歉,我的第二个问题不是“是/否”问题(尽管它的措辞是这样的)。你能告诉我如何从basicstring继承吗?
classmystring(basestring):pass
——如果你只是使用ascii,那么
classmystring(str):pass可能更容易。请参阅该问题上可能重复的链接。这里有一个例子。