在Python中钩住str.\uuuu getitem\uuuu
有没有办法钩住str.\uuuu getitem\uuuuuuuu 例如: 我希望能够做到:在Python中钩住str.\uuuu getitem\uuuu,python,Python,有没有办法钩住str.\uuuu getitem\uuuuuuuu 例如: 我希望能够做到: >>> "this is a string"[[1,3,4]] 'hs ' 将列表传递给[]并获取该列表中的项目 一个更现实的例子: 很容易让STRa字符串[1]或STRa字符串[INT1]返回STR实例 我希望能够使非STR字符串[INT1]返回STR实例。如果可以,为什么要钩住一个常用的内部函数 def get_characters (s, l): return "".joi
>>> "this is a string"[[1,3,4]]
'hs '
将列表传递给[]并获取该列表中的项目
一个更现实的例子:
很容易让STRa字符串[1]或STRa字符串[INT1]返回STR实例
我希望能够使非STR字符串[INT1]返回STR实例。如果可以,为什么要钩住一个常用的内部函数
def get_characters (s, l):
return "".join(s[i] for i in l)
>>> get_characters("this is a string", [1,3,4])
"hs "
不能对C中定义的对象上的方法进行修补。您最好使用外部函数来完成任务。以上只是一个示例。a真正想要的是在不修改原始源的情况下修改getitem的语义。@Juanjo:Myabe您应该编辑您的问题以显示您真正想要完成的任务。完成。请看我的新例子。有各种原因说明为什么这样做通常是个坏主意,但我认为不能修改来自包含内置代码的C代码的类只是一种优化。最好的方法是将INT类设置为INT的一个子类,这意味着它是不可变的,或者定义uu INT_uu,并使用string[intINT1]。字符串订阅实际上应该隐式调用非整数的_int。
def get_characters (s, l):
return "".join(s[i] for i in l)
>>> get_characters("this is a string", [1,3,4])
"hs "