0

我有一个类应该作为差异列表(增量),从另一个列表计算。例如,如果我有一个位置列表,我可以使用我的类来动态创建一个位移列表。

为此,我使用__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]
4

2 回答 2

2

您需要实施__repr__. print在打印之前将其参数转换为字符串,然后使用strwhich 依次查找__str__然后__repr__.

于 2012-07-28T17:13:23.200 回答
1

例如,添加此方法将起作用:

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)
于 2012-07-28T19:52:28.127 回答