組み込みのリスト型に基づいてクラスを構築しようとしています:
class MyList(list):
def __getslice__(self, i, j):
return MyList(
super(MyList, self).__getslice__(i, j)
)
def __add__(self,other):
return MyList(
super(MyList, self).__add__(other)
)
def __mul__(self,other):
return MyList(
super(MyList, self).__mul__(other)
)
def __getitem__(self, item):
result = super(MyList, self).__getitem__(item)
try:
return MyList(result)
except TypeError:
return result
MyList クラスをフィルターやマップなどの組み込み関数で動作させる方法があるかどうか疑問に思っています。「操作する」とは、フィルターとマップがリスト型オブジェクトではなく MyList クラス オブジェクトを返すようにすることを意味します。
>>> a = MyList([1, 2, 3, 4])
>>> type(a)
<class '__main__.MyList'>
>>> b = filter(lambda this: this > 2, a)
>>> type(b)
<type 'list'>
type(b) が type(a) が返すのと同じものを返すようにしたいと思います。
助言がありますか?