gpt4 book ai didi

python - 使用父实例初始化子实例

转载 作者:行者123 更新时间:2023-11-28 21:25:29 25 4
gpt4 key购买 nike

我有一个返回父类实例的函数:

def generateParent():
do_stuff
return Parent(some_parameters)

现在我想用 generateParent() 的调用结果初始化 Parent 的子类:

class Child(Parent):
def __new__():
return generateParent(some_other_parameters)

问题是,当我在 Child 中重写 Parent 的一些方法,然后在我的程序中的 Child 实例中调用它们时,原始的 Parent 方法被调用而不是 Child 的新方法。我在这里做错了什么吗?我在这里使用正确的设计来完成我的任务吗?

编辑:我既无权访问 Parent 也无权访问 generateParent()

解决方案(感谢@Paul McGuire 的回答):

class Child(object):
def __init__(self):
self.obj = generateParent()

def __getattr__(self, attr):
return getattr(self.obj, attr)

最佳答案

既然 generateParent 不是您的代码,那么您可能想要使用包含和委派而不是继承。也就是说,不是定义一个子类,而是定义一个包含生成的对象的包装类,在需要时将方法调用转发给它,但可以在包装中添加新的行为或修改的行为。

this question ,OP 有类似的情况,在库中生成了一个类,但想要扩展该类和/或修改该类的某些行为。看看我是如何在那个问题中添加包装器类的,您可能会考虑在这里做类似的事情。

关于python - 使用父实例初始化子实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14177788/

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