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 に答える