繁体   English   中英

使用python中的__getitem__作为列表的打印类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM