首页 > 解决方案 > 什么是子类化 python 的列表或 UserList 的好方法,以便我可以更改基础数据但使用内置排序?

问题描述

假设我想创建一个列表类型的子类 CaesarList,这样所有元素的访问都被移​​动了一些量(在类中硬编码,而不是参数。愚蠢的是,但这只是一个例子)。

也就是说,如果我将其硬编码为 +2,

   arr = CaesarList()
   arr.extend([1,2,3,4,5])

那么arr[2] == 5, arr[0]==3. 所以我可以通过覆盖来轻松完成那部分__getitem__。或者我想让它成为一个二维数组,或者其他一些废话,我可以覆盖__getitem__and __setitem__。但我希望能够利用内置排序。如何创建真正执行的 UserList 或列表兼容子类arr.sort()

标签: python-3.x

解决方案


如果您__lt__在类中覆盖该函数,它应该可以工作。相关文档


推荐阅读