在Python中钩住str.__getitem__
有没有办法可以修改 str.__getitem__ 这个方法?
举个例子:
我想要能够这样做:
>>> "this is a string"[[1,3,4]]
'hs '
把一个列表放到 [] 里,然后获取那个列表里的项目。
一个更实际的例子:
class STR(str):
pass
class INT(int):
pass
让 STR("a string")[1]
或者 STR("a string")[INT(1)]
返回一个 STR 实例是很简单的。
我想要能够让 "a non STR string"[INT(1)]
返回一个 STR 实例。
2 个回答
2
在C语言中,定义在对象上的方法是不能被随意修改的。你能做的最好的办法就是使用一个外部函数来完成这个任务。
3
为什么要去修改一个常用的内部函数呢,直接使用它不就可以了吗?
def get_characters (s, l):
return "".join(s[i] for i in l)
>>> get_characters("this is a string", [1,3,4])
"hs "