Python继承:在父类中创建子对象
我有一个父类,它有一个返回新对象的方法。我希望该对象的类型与self相同(即,如果在父类中调用,则为Parent;如果在子实例中调用,则为Child) 这里的Python继承:在父类中创建子对象,python,inheritance,Python,Inheritance,我有一个父类,它有一个返回新对象的方法。我希望该对象的类型与self相同(即,如果在父类中调用,则为Parent;如果在子实例中调用,则为Child) 这里的D=C.copy()将是Parent类型,而与C的类别无关。我想让copy返回与C相同类的实例,同时在父类中保留“some\u complex\u stuff”部分,以避免代码重复 上下文:Parent是一个抽象的组结构,“copy”返回子组(执行一系列代数运算),我有许多不同的子类使用此方法。您可以使用这样一个事实,即每个实例都有一个指向
D=C.copy()
将是Parent类型,而与C
的类别无关。我想让copy返回与C
相同类的实例,同时在父类中保留“some\u complex\u stuff”部分,以避免代码重复
上下文:Parent是一个抽象的组结构,“copy”返回子组(执行一系列代数运算),我有许多不同的子类使用此方法。您可以使用这样一个事实,即每个实例都有一个指向其类的指针,位于
\uuuuuuu class\uuuu
下:
class Parent(object):
def __init__(self,param):
self.param = param
def copy(self):
new_param = some_complicated_stuff(self.param)
return self.__class__(new_param)
这将是上述类的父类,但在派生类中是子类
您也可以使用
类型(self)
,而不是self.\uuuu类
,如前所述,或如前所述。类型(self)(新参数)
完美。谢谢
class Parent(object):
def __init__(self,param):
self.param = param
def copy(self):
new_param = some_complicated_stuff(self.param)
return self.__class__(new_param)