[英]Print class that uses __getitem__ in python as list
我有一个应该充当差异列表的类,该差异列表是从另一个列表计算得出的。 例如,如果我有一个位置列表,则可以使用我的类来动态创建位移列表。
为此,我通过以下方式使用了__getitem__
方法:
class Deltas(object):
def __init__(self, ref):
self.ref = ref
def __getitem__(self, index):
if index == 0:
return 0
else:
return self.ref[index] - self.ref[index-1]
samplelist = [1,2,3,5,7,9]
deltas = Deltas(samplelist)
如果我打印单个元素,效果很好,但是如果我打印整个列表,它会给我:
> print deltas
<__main__.Deltas object at 0x7f7aa93e3b50>
我想知道我还必须实现什么其他方法才能做到这一点:
> print deltas
[0, 1, 1, 2, 2, 2]
您需要实现__repr__
。 print
在打印之前将其参数转换为字符串,并使用str
,后者依次查找__str__
和__repr__
。
例如,添加此方法将起作用:
def __repr__(self):
return [x for x in self].__repr__()
或者,或者:
def __repr__(self):
strs = []
for x in self:
strs.append(str(x))
return '[%s]' % ', '.join(strs)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.