我有一些代码做切片:
class UnlabelledDataset(Dataset):
...
def __getitem__(self,sliceIndex):
data = self.data[sliceIndex]
if np.size(data) and not isinstance(sliceIndex, (int,long)):
return UnlabelledDataset(data) #Create Sliced Object
else:
return data
我想从这个类继承来添加功能。
从子类切片时,应返回子类型的对象
所有区域都完好无损。
我该怎么做?
如果我不重写__getitem__
(基本上重新实现父类中的内容,除了标有#Create Sliced Object
的行)。
然后切片将返回类型为UnlabelledDataset
的对象。
如果我重写它,那么我将实现相同的代码两次。
我可以设想一个解决方案,在那里我使用一个助手函数(可能传递一个闭包(函数)来进行构造) 但我希望有更优雅的方式
编辑:
为了澄清,对于父类,子类可能具有不同的构造函数签名。
例如,子类可能有额外的参数。
例如,子类有一个resolution参数。你知道吗
在父级中,使用
UnlabelledDataset(data)
代替self.__class__(data)
。这两门课都应该给出正确的答案。你知道吗作为一个极简主义的例子:
在ipython命令行上测试时:
因此,根据需要,方法
f
在从a
调用时生成A
的新实例,在从b
调用时生成B
的新实例。你知道吗每个类具有不同构造函数签名的示例
如果类
A
和B
具有不同的构造函数,那么我们可以创建一个新方法make_new
,来处理差异:相关问题 更多 >
编程相关推荐