假设我有一个我无法更改的库函数,它生成一个类 A 的对象,并且我创建了一个继承自 A 的类 B。
使用库函数生成 B 类对象的最直接方法是什么?
编辑-我在评论中被问及更多细节,所以这里是:
PyTables 是一个在 python 中处理分层数据集的包。我使用最多的一点是它能够管理部分在磁盘上的数据。它提供了一种仅带有扩展切片的“数组”类型,但我需要选择任意行。 Numpy 提供了这种功能——您可以通过提供与您从中选择的数组长度相同的布尔数组来进行选择。因此,我想继承 Array 来添加这个新功能。
从更抽象的意义上讲,这是我之前考虑过的问题。通常的解决方案是已经建议过的——有一个 B 的构造函数,它接受一个 A 和额外的参数,然后取出 A 的相关位插入到 B 中。因为这似乎是一个相当基本的问题,我问了一个问题看看是否有我不知道的标准解决方案。
原文由 saffsd 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为库函数返回一个 A,你不能不改变它就让它返回一个 B。
您可以做的一件事是编写一个函数来获取 A 实例的字段并将它们复制到新的 B 实例中:
编辑:根据您的情况, 组合而不是继承 可能是一个不错的选择;那就是你的 B 类可以只包含 A 的实例而不是继承: