Python继承:在父类中创建子对象

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

我有一个父类,它有一个返回新对象的方法。我希望该对象的类型与self相同(即,如果在父类中调用,则为Parent;如果在子实例中调用,则为Child)

这里的
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)