我有一个类DataSet
,它继承了Python中的list
类:
class DataSet(list):
def __init__(self, *args):
super(DataSet, self).__init__(*args)
现在我可以创建此类的实例并打印类型。
data = DataSet([0, 1, 2, 3, 4])
print(type(data))
>>> <class 'DataSet'>
然而,当我想要获取这个 DataSet
的子集并打印类型时,会得到以下输出:
data2 = data[2:4]
print(type(data2))
>>> <class 'list'>
由于我没有重写
list
的__getitem__
方法,所以会出现这种情况。Python的list
类有许多可以重写以使用的方法,但作为程序员,我只想做的是让所有这些通常返回list
类型实例的方法现在返回DataSet
类型的实例。是否有一种方法可以实现这一点,而无需手动重写所有这些函数?还是我必须手动覆盖所有这些方法?
list
呢? - juanpa.arrivillagaDataSet
进行有意义的操作。更具体地说,我想使用它来容纳我自己的类DataPoint
的实例,该类由时间戳和值组成。DataSet
包含可以轻松处理此DataPoint
类的计算方法,例如欧拉微分。我认为继承列表类会起作用,因为它具有所有这些内置方法,但现在我最终必须覆盖它们,因此在这种情况下,HasA 可能更有效。 - suitendaalcollections.UserList
呢?它基本上是为了避免直接继承list
而设计的,因为list
有各种令人惊讶的副作用。我认为这也应该解决你的“类型”问题。 - Timus