我需要第三方模块m的类X的一些功能。我可以直接使用m.X,但是将来可能需要用另一个n.Y类来替换m.X(例如,如果我发现更好的实现)。在
我希望避免在这种情况下更改其余代码。在
现在,我希望m.X的完整接口,包括初始化,保持不变。我为m.X写了一个包装W,如下所示:
class W(m.X):
def __init__(self, *args):
super().__init__(*args)
将来,如有需要,我计划将上述内容改写为:
^{pr2}$
我现在的m.X包装纸可以接受吗?是不是有问题,或者纽约的包装有问题?在
Tags:
你可以简单地使用
默认情况下继承
m.X.__init__()
。在最简单的方法是:
实际上,Python中的所有东西都是一类对象,包括类型。类与任何其他变量几乎无法区分,例如:
^{pr2}$可以实例化m.X的一个实例,同时显示W是它的实际名称。(请注意,使用此方法,
isinstance
将无法正常工作-它将在第一个示例中正常工作。)在某些情况下,使用赋值可能无法很好地与ide配合使用。在这种情况下:
也会产生相同的结果,不过由于}的实例。在
W
的实例只是m.X
的实例,因为W
是一个子类:使用W=m.X; W(args)
将创建{这将取决于你使用的m.X和n.Y在他们的方法上有多大的不同,但它可以简单到
因此,您的代码会自动反映新模块,这可能会使您需要在整个代码库中所做的更改最小化。在
相关问题 更多 >
编程相关推荐