假设我有一个不能更改的库函数,它生成一个类A的对象,并且我创建了一个继承自A的类B。
使用库函数生成B类对象的最直接方法是什么?
编辑-我在评论中被要求提供更多细节,所以这里是这样的:
PyTables是一个用Python语言处理分层数据集的包。我使用最多的是它管理部分在磁盘上的数据的能力。它提供了一个'Array‘类型,它只提供扩展切片,但我需要选择任意行。Numpy提供此功能-您可以通过提供与从中选择的数组具有相同长度的布尔数组来进行选择。因此,我想创建一个子类Array来添加这个新功能。
在更抽象的意义上,这是我以前考虑过的问题。通常的解决方案是已经建议的-为B创建一个构造函数,该构造函数接受A和其他参数,然后取出A的相关部分插入到B中。因为这似乎是一个相当基本的问题,所以我要求询问是否有我不知道的标准解决方案。
发布于 2009-02-28 01:40:07
如果子类的初始化器可以处理它,或者您编写了一个显式的升级器,就可以做到这一点。下面是一个示例:
class A(object):
def __init__(self):
self.x = 1
class B(A):
def __init__(self):
super(B, self).__init__()
self._init_B()
def _init_B(self):
self.x += 1
a = A()
b = a
b.__class__ = B
b._init_B()
assert b.x == 2
https://stackoverflow.com/questions/597199
复制相似问题