¿是否可以定义一个 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
提交
取消