【发布时间】:2018-11-14 10:54:14
【问题描述】:
¿是否可以定义一个 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]
【问题讨论】:
-
你希望加法有什么作用?像列表一样串联?
-
定义一个
class CustomList(list)正是需要的,你遇到了什么问题? -
@MisterMiyagi "list1 + list2" 应该返回 list1[0] 和 list2[0] 的值之和。查看我的最后一次编辑。
-
我知道你想要什么,但不是你的问题是什么。你不知道如何重载运算符吗?如何根据列表的长度进行切换?如何将基类行为用于非标量列表?
-
@MisterMiyagi 我没有定义类的经验,但我可以将 Green Cloak Guy 示例用于其他二元运算符。但是我不知道要使用什么方法来重新定义(或重载什么运算符),例如“print(list)”而不是“print(list[0])”。