有没有钩住str .__ getitem__的方法?在Python中钩住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实例。
这样做的原因有很多,通常是一个坏主意,但我认为无法修改来自C代码(包括内置函数)的类只是一种优化。你可以做的最好的办法是使你的INT类成为int的一个子类(这意味着它是不可变的),或者定义'__int__',并使用“string”[int(INT(1))]。 (对于非整数,字符串下标应该实际上隐式调用'__int__'。) – 2010-02-07 02:21:05