python deepcopy函数_Python deepcopy

python deepcopy函数_Python deepcopy我想为给定的SQLAlchemy映射类重写__deepcopy__,以便它忽略任何SQLA属性,但深入复制其他所有类的类.我并不是特别熟悉覆盖任何Python的内置对象,但我对我想要的东西有所了解.让我们创建一个使用SQLA映射的非常简单的类User.classUser(object):def__init__(self,user_id=None,name=None):self.user_i…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

我想为给定的SQLAlchemy映射类重写__deepcopy__,以便它忽略任何SQLA属性,但深入复制其他所有类的类.

我并不是特别熟悉覆盖任何Python的内置对象,但我对我想要的东西有所了解.

让我们创建一个使用SQLA映射的非常简单的类User.

class User(object):

def __init__(self, user_id=None, name=None):

self.user_id = user_id

self.name = name

我已经使用dir()来查看映射之前和之后的SQLAlchemy特有的属性,并且我找到了_sa_class_manager和_sa_instance_state.

问题

只要那些是唯一的,在定义__deepcopy__时我会如何忽略它?

此外,SQLA是否有任何属性注入映射对象?

(我在之前的一个问题中问了这个问题(虽然我选择了一个主要问题的答案后几天作为编辑),但我想我错过了那里的火车.为此道歉.)

编辑 – 修复代码感谢zifot的回答

我从Python文档中得到的唯一一件事就是你需要用memo定义deepcopy作为额外的参数.经过几十年的挖掘,我尝试了这个:

def __deepcopy__(self, memo):

dpcpy = self.__class__()

memo[id(self)] = dpcpy

for attr in dir(self):

if not attr.startswith(‘_’):

value = getattr(self, attr)

setattr(dpcpy, attr, copy.deepcopy(value, memo))

return dpcpy

然后我创建了一个User实例:

snake = User(913, ‘Snake,S.’)

之后,我尝试了深度扫描操作:

snake_dc = copy.deepcopy(snake)

…而且snake_dc仍然有SQLA属性……

我愿意提供帮助,建议等等.

最佳答案 mavnn 07​​000.例如,尝试将用户的init更改为:

def __init__(self, user_id = None, name = None):

self.user_id = user_id

self.name = name

至于复制映射的实例,我建议阅读this thread

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188847.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月15日 下午1:34
下一篇 2026年4月15日 下午1:40


相关推荐

  • Vue图片加载错误、图片加载失败的处理

    Vue图片加载错误、图片加载失败的处理比如后台返回的一个图片字段pic,我们通常在代码里,会做一个检验图片,通常会像下面这样写<img:src=”pic?pic:’../../assets/img/load.png'”alt=””>这个判断只能判断pic是否存在,只有pic=”的情况下,才回显示设置的默认图片,但是如果pic这个字段是有值的呢,并且是一个错误的值,或者一个找不到的404的图片呢?这个时候就要…

    2022年6月2日
    150
  • 「VS Code」Visual Studio Code 菜鸟教程:从入门到精通

    「VS Code」Visual Studio Code 菜鸟教程:从入门到精通VisualStudio 或简称为 VSCode 是我最喜欢的代码编辑器 我希望能有更多人享受到 VSCode 的便捷与强大 然而已存教程不足以成为我们了解 VSCode 的窗口 很多具有广泛使用场景的功能 比如命令窗口和终端 这些教程都没有涉猎 该种情况促成了本文的诞生 本文希望 哪怕是从未使用过 VSCode 的读者 也能在阅读本文后便精通使用 VSCode

    2026年3月20日
    2
  • 【23】进大厂必须掌握的面试题-50个spring面试

    让我们从Spring面试问题的第一部分开始,即“一般问题”。 一般问题–Spring面试问题 1.不同版本的Spring Framework的主要功能是什么? 版 商标 特征 Sp…

    2020年11月15日
    669
  • python中返回上一步操作的代码_pycharm最常用的快捷键总结

    python中返回上一步操作的代码_pycharm最常用的快捷键总结工欲善其事必先利其器 Python 开发利器 Pycharm 常用快捷键以及配置如下 相信有了这些快捷键 你的开发会事半功倍一常用快捷键编辑类 Ctrl D 复制选定的区域或行 Ctrl Y 删除选定的行 Ctrl Alt L 代码格式化 Ctrl Alt O 优化导入 去掉用不到的包导入 Ctrl 鼠标

    2026年3月27日
    2
  • 爬虫课第一次报错总结

    爬虫课第一次报错总结1importurllib.requesturl=’https://www.baidu.com/s?wd=海贼王’res=urllib.request.urlopen(url)UnicodeEncodeError:‘ascii’codeccan’tencodecharactersinposition10-12:ordinalnotinrange(128)原因:url包含不是ascii的字符处理:把“海贼王”改为%+十六进制(法1:百度,法2urllib.par

    2022年7月11日
    19
  • HDU4876ZCC loves cards(多校题)

    HDU4876ZCC loves cards(多校题)

    2022年1月21日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号