gpt4 book ai didi

Python继承: create child object in parent class

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:25 25 4
gpt4 key购买 nike

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

class Parent(object):
def __init__(self,param):
self.param = param

def copy(self):
new_param = some_complicated_stuff(self.param)
return Parent(new_param)

class Child(Parent):
pass

C = Child(param)
D = C.copy()

此处,无论 C 类如何,D = C.copy() 都将是 Parent 类型。我想让 copy 返回与 C 相同的类的实例,同时将“some_complicated_stuff”部分保留在父类中以避免代码重复。

上下文:Parent是一个抽象的组结构,“复制”返回子组(进行一系列代数运算),并且我有许多不同的Child类使用此方法。

最佳答案

您可以利用以下事实:每个实例在 __class__ 下都有一个指向其类的指针:

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)

这将是上述类的Parent,但在派生类中将是Child

除了 self.__class__,您还可以使用 type(self),如 @Eli Korvigo曾说过in the comments ,或如前所述here .

关于Python继承: create child object in parent class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48626989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com