当前位置: 首页 > 面试题库 >

Python:Deepcopy在用户定义的类上不起作用?

琴正初
2023-03-14
问题内容

在以下示例中,我希望Deepcopy可以创建字段的副本,而不仅仅是复制引用。这里发生了什么,有什么简单的方法可以解决?

from copy import deepcopy

class Test:
    field = [(1,2)]

t1 = Test()
t2 = deepcopy(t1)

t2.field[0]=(5,10)

print t1.field # [(1,2)] expected but [(5,10)] obtained
print t2.field # [(5,10)] expected

输出:

[(5, 10)]
[(5, 10)]

问题答案:

深层复制(默认情况下)仅适用于实例级别的属性-不适用于类级别-唯一的多个含义并没有多大意义class.attribute

将您的代码更改为:

class Test:
    def __init__(self):
        self.field = [(1,2)]


 类似资料:
  • 问题内容: 我已经创建了一个UserType(请参见下文)来处理mySQL数据库中的一种情况,在该情况下我们将空日期保存为0000-00-00 00:00:00。 当我尝试使用dispDT的null持久化我的实体时(请参见下文),它将生成以下异常:“ javax.persistence.PersistenceException:org.hibernate.PropertyValueExceptio

  • 问题内容: 这按预期工作,测试失败(由于haltTesting()),并重复了2次 但是因为我在一堂课中有多个测试,所以我在课上定义了repeatAnalyzer 但是文档没有重复测试,它说: 类级别的@Test注释的作用是使该类的所有公共方法都成为测试方法,即使它们没有被注释也是如此。如果要添加某些属性,仍然可以在方法上重复@Test批注。 所以应该是可能的,还是我期望得到错误的结果? 问题答案

  • 问题内容: 我在标准类中校准函数时遇到问题。必须具有所有导入才能使用该功能。我需要延长班级吗? 感谢您的即时帮助。 问题答案: 是Context的方法。因此,您可以将上下文传递给DbAdapter构造函数并从中调用:

  • 我正在为iOS和Android开发(并接近发布)科尔多瓦应用程序。 为了使用最新的网络视图引擎,我正在尝试使用cordova插件ionic网络视图。 我可以在iOS上使用此插件,但在Android上,该应用程序在启动时崩溃。 MY CONFIG.XML: 日志: 5726-5770/mycertificate.enterprise D/SERVER: 处理本地请求: cordovaandroid:

  • 我在Angular中有一个自定义验证的表单构建器,但我在自定义验证中读取文件后无法获取文件的类型。 下面是StackBlitz: https://stackblitz.com/edit/Angular-ivy-atwqqc?file=src%2fapp%2fapp.component.ts TS文件

  • 自定义注释 自定义注释处理程序 超级类 子类 Subclass调用SuperClass方法但在不调用 当我将移动到子类method时,AspectHandler可以获取 如何在超类保护方法中使用自定义注释? 更改 但还是不行 所以我把我的< code >子DAO改成了under code 这不是完美的解决方案,但它的工作原理 情况1:从子类方法调用超类方法不起作用 情况 2:使超级类实例和从实例调