2009年10月17日土曜日

コンテナ

# -*- coding: utf-8 -*-

# 特殊メソッド __getitem__ __setitem__ __delitem__
# を定義すると添字表記が出来るようになる
class A:
    def __getitem__(self, index):
        return "get item %d" % index
    def __setitem__(self, index, value):
        print "set item", index, value
    def __delitem__(self, index):
        print "del item", index

# 特殊メソッド __setslice__ __getslice__ を定義すると
# スライスが出来るようになる
class B(A):
    def __setslice__(self, i, j, sequence):
        print "set slice", i, j, sequence
    def __getslice__(self, i, j):
        return "get slice %d %d" % (i, j)

b = B()

print b[0]
b[1] = "123"
del b[2]
b[0:1] = "abc"
print b[2:4]

詳細はドキュメントで

0 件のコメント:

コメントを投稿