子类Python列表以验证新项目
问题内容:
我想要一个python列表,该列表在外部将其自身表示为其内部列表项的平均值,但在其他方面则表现为列表。TypeError
如果添加了一个不能转换为浮点数的项目,它应该引发一个。
我所坚持的部分正在提高TypeError
。应当提高了通过任何list方法,如添加无效项目.append
,.extend
,+=
,由片设置,等等。
有没有办法拦截添加到列表中的新项目并对其进行验证?
我尝试重新验证其中的整个列表__getattribute__
,但是当调用它时,我只能访问列表的旧版本,而且它甚至都没有被称为初始化,运算符+=
或,如切片mylist[0] = 5
。
有任何想法吗?
问题答案:
继承自MutableSequence并实现其所需的方法以及仅属于Sequence范围之外的任何其他方法(例如此处的运算符)。这将允许您在自动生成迭代器并包含功能的同时,更改类似列表功能的操作员操作。
如果您想检查切片,请isinstance(key, slice)
在您的__getitem__
(和/或__setitem__
)方法中进行。请注意,单个索引(例如myList
[0])不是切片请求,而是单个索引和myList [:0]是实际的切片请求。