我想从下标表示法获取切片对象。到目前为止,我已经使用了一个 hacky 技巧来利用 Python 内置下标来切片转换功能:
class Slice:
def __getitem__(self, item):
return item
例如,Slice()[1:2]
将返回 slice(1,2,None)
。
有谁知道更简单的方法吗?
最佳答案
如果您必须使用下标表示法,那么除了使用 type
创建的动态类之外,您当前的解决方案是最紧凑的。 :
>>> Slice = type('', (), {'__getitem__': lambda _, x: x})()
>>> Slice[1:2]
slice(1, 2, None)
>>> Slice[1:2:3]
slice(1, 2, 3)
>>>
但是这样的代码通常很难理解/维护/扩展等。
相反,我建议您使用 slice
,它允许您直接创建切片对象:
>>> slice(1, 2)
slice(1, 2, None)
>>> slice(1, 2, 3)
slice(1, 2, 3)
>>>
内置函数是专门为此目的而制作的(嗯,还有其他一些目的,例如使用 isinstance
进行类型检查),因此非常可移植且具有 Python 风格。
关于python - 从下标符号构建切片对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453595/