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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【NOIP2011】聪明的质检员

    【NOIP2011】聪明的质检员2.聪明的质监员(qc.cpp/c/pas)小T是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi。检验矿产的流程是:1、给定m个区间[Li,Ri];2、选出一个参数W;3、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi:这批矿产的检验结果Y为各个区间

  • 虚拟主机和云服务器有什么区别,我们应该如何选择?[通俗易懂]

    虚拟主机和云服务器有什么区别,我们应该如何选择?[通俗易懂]虚拟主机已经有了一段时间的历史,近几年随着其技术的不断成熟,以及其低廉的价格,成为众多站长的首选对象。但近两年云计算的出现,衍生出云服务器这个产物。这时,很多站长便对虚拟主机与云服务器应该如何选择感到困扰,不知是选择技术比较成熟的虚拟主机,还是选择最新的云服务器。虚拟主机与云服务器的区别:虚拟主机是利用虚拟技术将一台物理服务器划分成多个“虚拟”服务器,虚拟主机的出现大大节省了服务器硬件的成本,…

  • linux chmod 755 ,750,777

    linux chmod 755 ,750,777一直没用过chmod777(755,750)的命令,也不知道具体是什么作用,尤其不知道755,750,777分别代表什么意思,只记得有一次咨询一个同门时告诉我不要设置成777模式,后来就没有接触了。因为今天又用到了,所以整理归纳以一下。chmod是Linux下设置文件夹权限的命令,后面一般跟三个数据,代表不用用户群体在这个文件夹上的权限设置:一般是三个数字:chmod750dir_wzg第一个数字表示文件所有者的权限第二个数字表示文件所有者同属一个用户组的其他用户在该文件上的权限

  • Mysql引擎介绍及InnoDB逻辑存储结构

    Mysql引擎介绍及InnoDB逻辑存储结构

  • 矩阵与线性方程组

    矩阵与线性方程组

  • 什么是pisa测试_从PISA测试看中国四省市学生:成绩遥遥领先之外,这些特质令人意外…

    什么是pisa测试_从PISA测试看中国四省市学生:成绩遥遥领先之外,这些特质令人意外…印象中PISA测试就是证明中国学生是王者的时刻。最新的这次也不例外。但除了考试分数高,中国学生还有哪些特质?——我是无所不能的分割线———先来了解下什么是PISA:PISA全名“国际学生评估项目”(theProgrammeforInternationalStudentAssessment),由国际经合组织(OECD)举办,每三年一次,针对全世界多个国家和地区(包括但不…

发表回复

您的电子邮箱地址不会被公开。

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