我正在研究一个python项目,下面是我所拥有的:
mystring= 'Hello work'
我想编写一个函数,将k
替换为m
,如下所示:
def replace_alpha(string):
return string.replace('k', 'm') # returns Hello worm
我想在Monkey Patching
上使用string
,以便可以通过以下方式使用它:
string = 'Hello work'
string = string.replace_alpha()
print(string) # prints Hello worm
代替:
string = replace_alpha(string)
这可能吗?我可以使用内置猴子修补程序,而可以扩展__builtins__
吗?
答案 0 :(得分:3)
forbiddenfruit库是可能的:
from forbiddenfruit import curse
def replace_alpha(string):
return string.replace('k', 'm')
curse(str, "replace_alpha", replace_alpha)
s = 'Hello work'
print(s.replace_alpha())
答案 1 :(得分:1)
不可能那么容易。您无法设置不变的str
实例或内置str
类的属性。没有这种能力,很难改变他们的行为。但是,您可以子类str
:
class PatchStr(str):
def replace_alpha(self):
return self.replace('k', 'm')
string = PatchStr('hello work')
string = string.replace_alpha()
string
# 'hello worm'
我认为你不会走得更近。