有没有一种在 python 中创建复制构造函数的好方法?

2024-02-14

我意识到有人提出了与此非常相似的问题,尽管不完全是这样。

我想为我的类的构造函数提供一个可选参数,如果它是我的类的实例,则将复制该参数。例如,类似(我知道这段代码不起作用!):

class Foo(object):
    def __init__(self, foo=None):
        self.x = None
        self.y = None
        self.z = None

        if foo is not None and isinstance(foo, Foo):
            self = copy.deepcopy(foo)

a = Foo()
a.x = 1
a.y = 2
a.z = 3

b = Foo(a)
print b.x
print b.y
print b.z

我知道对此有一些实用的解决方案。我可以根据 foo 相应属性的值来设置 self 的每个属性,但这真的很烦人,因为我的类有很多很多属性。或者我可以简单地使用 do:

b = copy.deepcopy(a)

...但如果可能的话我宁愿不这样做。我也希望避免覆盖__new__.

python 中真的没有像样的方法来创建复制构造函数吗?


我认为这是最Pythonic的方法——复制工厂方法。

import copy

class Foo(object):
    def __init__(self):
        self.x = None
        self.y = None
        self.z = None
    def copy(self):
        return copy.deepcopy(self)

a = Foo()
a.x = 1
a.y = 2
a.z = 3

b = a.copy()
print b.x
print b.y
print b.z

这在 python 基本类型中相当常见(例如dict.copy)。它不是一个复制构造函数,但我不认为这是一个非常Pythonic的概念!

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

有没有一种在 python 中创建复制构造函数的好方法? 的相关文章

  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 如何在 Windows 64 上安装 NumPy?

    NumPy 安装程序在注册表中找不到 python 路径 无法安装 需要 Python 2 5 版本 但在注册表中未找到该版本 OK 我必须修改注册表吗 我已经修改了 PATH 以指向Python25安装目录 我可以检查一下您使用的是什么安
  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • 在 matplotlib 中的极坐标图上移动径向刻度标签

    From matplotlib 示例 http matplotlib org examples pylab examples polar demo html import numpy as np import seaborn as sbs
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这

随机推荐

  • 当父元素有最小高度/最大高度值但没有高度值时,为什么子元素上的 height: 100% 不适用?

    假设我们有以下设置 container background color red width 500px min height 300px child background color blue width 500px height 100
  • 日期范围内的 SQL 分割数

    我有一个表 例如这个数据 ID start date end date amount a1 2013 12 01 2014 03 31 100 我想要一个分割日期的查询 这样我就可以将全年的金额分割出来 如下所示 ID org start
  • c# - 数组从哪里继承(即 .int[] )

    创建数组时 例如int 它是否继承自任何东西 我认为它可能继承自 System Array 但查看编译后的 CIL 后发现并非如此 我认为它可能继承自 System Array 或类似的东西 考虑到您可以调用方法并访问数组上的属性 I e
  • 使用 C 编程频谱图 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试用 C 语言制作音频频谱图
  • 向量数学,求角度

    我试图通过编写一个小型 2D 游戏来学习 XNA 它是一个自上而下的视角 我尝试进行双重移动 使用左右和上下键沿轴移动 以及向右看鼠标光标 以便玩家可以同时奔跑和瞄准 我有一个用于玩家位置的向量 m PlayerPos 一个用于鼠标位置的向
  • 如何在 NestJS 中为每个新的 HTTP 请求使用新实例?

    我有一个 API 并且正在尝试发送请求 这是有效的 但我注意到在收到回复后 这些类并没有被销毁 我目前正在使用 NestJS 但是当我尝试测试时 nodeJS ExpressJS 也遇到了这个问题 我正在使用以下代码 Injectable
  • 如何计算两个地点之间的时差

    我在计算两个时区之间的时差时遇到问题 如果我在位置 A 我知道纬度和经度以及当前时间 我去位置B我知道纬度和经度以及当前时间 如何计算当前两个点之间的时间差 以UTC为单位 首先获取一个可以转换纬度 经度以获取国家 地区和州 省的数据库或库
  • 为什么我的 SQL“NOT IN”子句产生与“NOT EXISTS”不同的结果

    当我期望两个 SQL 查询产生相同的结果时 它们会产生不同的结果 我正在尝试查找没有相应位置的事件的数量 所有位置都有事件 但事件也可以链接到非位置记录 以下查询生成计数 16244 这是正确的值 SELECT COUNT DISTINCT
  • 定义双感叹号?

    我理解双感叹号的作用 或者我认为我理解 但我不确定它是如何在随机对象上定义的 例如下面的代码片段 Assignment a if getAssignment query a return false hasSolution a if a r
  • uint 和 unsigned int 之间的区别?

    有什么区别吗uint and unsigned int 我正在查看此网站 但所有问题都涉及 C 或 C 我想要一个关于C语言的答案 如果相关的话 请注意我在 Linux 下使用 GCC uint不是标准类型 unsigned int is
  • 关闭 GPS 时广播接收器调用了 2 次?

    显现
  • 将 UTF-8 编码的 NSData 转换为 NSString

    我有UTF 8编码NSData来自 Windows 服务器 我想将其转换为NSString对于iPhone 由于数据包含在两个平台上具有不同值的字符 如度数符号 如何将数据转换为字符串 如果数据不是空终止的 您应该使用 initWithDa
  • 当只有插件源可用时,如何在 sbt 项目中使用插件?

    我想使用sbt 斯克鲁奇 https github com bancek sbt scrooge插件 但它的存储库现在不可用 http koofr github com http koofr github com 我想我应该将这个插件的源代
  • 如何在 NLTK 中进行依存解析?

    翻阅 NLTK 书 并不清楚如何从给定的句子生成依存树 本书的相关部分 依存语法子章节 https www nltk org book ch08 html dependencies and dependency grammar给出一个示例图
  • 数组与数组列表有显着差异吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中何时使用 ArrayList 而不是 array https stackoverflow com questions 412813 when to use arraylist over ar
  • 混合 C 和 C++...对函数的未定义引用 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 C 项目中 我尝试调用这个在 C 中定义的函数 int CyBtldr RunAction CyBtldr Action action
  • 什么分布式消息队列支持百万级队列?

    我正在寻找一个分布式消息队列 它将支持数百万个队列 每个队列每秒处理数十条消息 消息会很小 几十个字节 而且我不希望队列变得很长 每个队列最多有几十条消息 但是当系统运行时 队列应该保持相当长的状态空的 我不确定集群中有多少个节点 可能取决
  • 使用指南针指向实际坐标位置而不仅仅是北

    我见过一些这样的例子 但不确定到底如何实现它 例如iPhone 指南针 GPS 方向 https stackoverflow com questions 4130821 iphone compass gps direction 中我需要在
  • 欧拉计划问题 233

    我决定解决欧拉计划接下来 但我遇到了一些重大问题 我做了一些分析并取得了一些相当不错的进展 但现在我陷入了困境 这是我的工作 Lemma 1 由于圆经过 4 个角点 因此对于任意 n 至少有 4 个解 但对于圆周上的每个点 都可以通过反射发
  • 有没有一种在 python 中创建复制构造函数的好方法?

    我意识到有人提出了与此非常相似的问题 尽管不完全是这样 我想为我的类的构造函数提供一个可选参数 如果它是我的类的实例 则将复制该参数 例如 类似 我知道这段代码不起作用 class Foo object def init self foo