猴子修补字符串Python

时间:2018-10-25 07:33:31

标签: python python-3.6

我正在研究一个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__吗?

2 个答案:

答案 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'

我认为你不会走得更近。