【发布时间】:2014-03-18 23:27:32
【问题描述】:
我的基类有一个返回自身实例的方法。当我写我的子类时,有没有什么办法可以让这个实例成为我的子类的实例而不是基类,而不需要修改基类的代码或者将整个基类方法重写到我的子类方法中?
例子:
class A:
def __init__(self,x):
self.x = x
def add(self):
self.x += 2
def new(self,z):
n = A(z)
return n
class B(A):
def __init__self():
A.__init__(self,x)
如果我这样做的话:
a = B(10)
b = a.new(4)
那么 b 将是 A 的一个实例,而不是我想要的 B 的一个实例。 在这个简单的示例中,我可以只覆盖 B 类中的方法,但在我的程序中我不想这样做,它只会破坏可移植性,因为我无法控制基类,因为它是另一个包的一部分。
有什么办法吗?
【问题讨论】:
标签: python class inheritance instance subclass