?是否可以定義一個 python 列表的子類,它允許使用單元素列表變量,就好像它們是標量一樣?例如,我希望能夠做到:class CustomList(list): ... ...list1 = CustomList([2])list2 = CustomList([3])list3 = CustomList([4,5,6])list4 = CustomList([{'foo':'bar'}])list1 #should return list1[0]list4['foo'] #should return list4[0]['foo'] = 'bar'list1 + list2 #should return list1[0] + list2[0] = 5但保持正常使用列表的能力:for i in list3: print list[i]
2 回答

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
假設通過添加兩個類意味著連接兩個列表,您可以執行以下操作(注意 __add__ 方法以了解添加的工作原理):
from collections import MutableSequence
class CustomList(MutableSequence):
def __init__(self, data=[]):
self._list = data
def __add__(self, newlist):
return self._list + newlist._list
def __len__(self):
return len(self._list)
def __getitem__(self, i):
return self._list[i]
def __delitem__(self, i):
del self._list[i]
def __setitem__(self, i, val):
self._list[i] = val
def __str__(self):
return str(self._list)
def insert(self, i, val):
self._list.insert(i, val)
添加回答
舉報
0/150
提交
取消