使用父实例初始化子实例

2024-01-16

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

def generateParent():
   do_stuff
   return Parent(some_parameters)

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

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)

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

In 这个问题 https://stackoverflow.com/questions/1382871/dynamically-attaching-a-method-to-an-existing-python-object-generated-with-swig/1383646#1383646,OP 也有类似的情况,在库中生成了一个类,但想要扩展该类和/或修改该类的某些行为。看看我如何在该问题中添加包装类,您可能会考虑在这里做类似的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用父实例初始化子实例 的相关文章

随机推荐

  • 如何让 AutoFixture AutoMoq 返回实例化对象中注入服务的结果?

    我正在尝试测试使用存储库服务的服务类 我设置了自定义设置 我认为应该与我的存储库服务一起使用 但返回默认的匿名结果 如果您查看下面的代码示例 当我调用 svc GetFoos 方法时 我试图获取在自定义类中注册的 Foo 对象 但我什么也没
  • POST_NOTIFICATIONS 权限对话框未显示

    我在询问新问题时面临不受欢迎的行为POST NOTIFICATIONS远程测试人员拥有的某些特定设备的权限 Pixel 4a Android 13 遗憾的是没有日志和 电缆访问 新安装的应用程序 仍然以 API30 为目标 但也尝试将目标设
  • Java、静态方法绑定和泛型都与一些方法重载结合在一起

    正如标题所暗示的 我的问题有点奇怪和复杂 我知道我要做的事情违反了 良好 编程实践的所有规则 但是嘿 如果我们不活一点 生活会怎样呢 所以我所做的是创建以下程序 请注意 这是一个更大的实验的一部分 旨在真正尝试和理解泛型 因此某些函数名称可
  • 不知道如何注入 LinkGenerator

    所以我知道如何设置我的控制器 以便我可以接受注入到控制器中的 LinkGenerator 我不明白的是如何在启动时使用 LinkGenerator 注入控制器 控制器 protected readonly LinkGenerator lin
  • 如何克隆 intellij 中的类?

    我在intellij中有一个scala项目 我想将一个新类克隆到源类所在的同一个包中 但我不知道如何做到这一点 我可以看到如何将其复制到新包 但我想在同一个包中复制 克隆 Edit 如果我在 com company widgets 包中有一
  • 在 R 脚本中传递字符串变量以在 SQL 语句中使用它

    我尝试在 R 脚本中使用字符串变量通过 SQL 语句使用 例如 x PASS SQL lt paste select ID NAME STATUS from STUDENT where STATUS x sep Q1 lt dbGetQue
  • 如何使用服务名称而不是 SID 连接到 Oracle

    我有一个使用 JDBC 通过 JPA 的 Java 应用程序 该应用程序使用主机名 端口和 Oracle SID 连接到开发数据库 如下所示 jdbc oracle thin oracle hostserver1 mydomain ca 1
  • 如何使用 Next.js 通过 CDN 提供静态生成的页面

    我正在尝试使用 Next js 9 5 2 进行服务器端渲染和静态站点生成 SSR 与 assetPrefix 配合使用效果很好 我能够在 CloudFront 上托管所有静态资产 但是 我不确定托管静态页面的最佳方法是什么 我面临两个问题
  • 将 Int 除以 Int 并返回 Int

    我需要一个可以得到两个的函数Ints a and b 并返回A B as Int 我确定A B永远是一个整数 这是我的解决方案 myDiv Int gt Int gt Int myDiv a b let x fromIntegral a y
  • 'str'对象不可调用,带有打印

    python3 applicant input Enter the applicant s name interviewer input Enter the interviewer s name time input Enter the a
  • 如果从不同的表单调用按钮,为什么 Ng Repeat 不起作用?

    我有一个 html 表 其中包含 ng 重复指令和两个按钮 第一个将打开一个包含新表单的模式 让我创建我的用户 然后当我单击 保存 时 会将其添加到列表中 第二个采用相同的原始形式并添加用户 我不明白为什么当我单击第一个不同形式的按钮时 我
  • npm install - javascript 堆内存不足

    跑步时npm install g ionic我收到以下错误 致命错误 CALL AND RETRY LAST 分配失败 JavaScript 堆内存不足 有没有办法全局增加node js内存限制 您可以使用以下命令启动 NPM node m
  • 对 multipartfile 使用 @RequestParam 是正确的方法吗?

    我正在开发一个 spring mvc 应用程序 我想在我的控制器中处理多部分请求 在我传递的请求中MultiPartFile另外 目前我正在使用 RequestParam要获取文件参数 该方法如下所示 RequestMapping meth
  • 打开文件对话框以选择 XML 文件

    我有一个 VBScript 它从 c 驱动器中选择一个文件 并从 XML 文件上的标签获取信息 但我希望用户能够从对话框中选择该文件 但我似乎无法完成它 这里是我的脚本 Dim xmlDoc objNodeList plot fin Set
  • 如何为组件编写抽象类(具有可扩展状态和属性)?

    我正在尝试编写一个抽象的 ReactJS 类 然后扩展它 因此我需要扩展它的props and state 据我了解 我是 React 新手 基于尼赞的帖子 https stackoverflow com a 39124219 595122
  • 如何根据文本覆盖的 ImageView 的颜色更改文本的颜色?

    所以我在上传的用户上设置了带有白色文本标签的透明按钮ImageView 如果用户上传的图像大部分为白色 则按钮即使不是完全不可见 也很难看到 有谁知道一种方法来获得平均颜色ImageView的源图片 绘图 如果我能做到这一点 我可以将其与我
  • Git:Cherry-Pick 到工作副本而不提交

    我有几个分支 我在其中保留了某些提交 我想时不时地应用到我的工作副本 最初我尝试了择优挑选 但我不想稍后在目标分支中提交 所以我做了cherry pick reset HEAD 1 soft 有没有像只挑选工作副本这样简单的东西 使用 n
  • 如何将数组或对象的数组转换为关联数组?

    我习惯了 perl 的 map 函数 其中回调可以分配键和值 从而创建一个输入为平面数组的关联数组 我知道array fill keys http www php net manual en function array fill keys
  • Jersey ContainerResponseFilter 中的 @Context HttpServletRequest 范围

    我正在编写泽西响应过滤器 我正在使用泽西岛 1 17 我想访问过滤器 API 中 httpServletRequest 的一些属性 我现在正在做的方式如下 像下面的代码片段一样注入 servletRequest 是否安全 或者这会导致某种并
  • 使用父实例初始化子实例

    我有一个返回 Parent 类实例的函数 def generateParent do stuff return Parent some parameters 现在我想用调用的结果来初始化 Parent 的子类generateParent c