ObjectCopy

对象的传参用的是传引用,但开发中通常不允许对传入参数进行修改。因此对象拷贝很常用,Python提供一个很方便的对象拷贝方法

如代码:

__author__ = ‘houjinchao‘

import copy

def main():
    a=[1,2,3,4,5,6,[‘a‘,‘b‘,‘c‘,‘d‘]]
    b=a
    c=copy.copy(a)
    d=copy.deepcopy(a)
    a.append(8)
    a[6].append(‘e‘)

    print ‘a=‘,a
    print ‘b=‘,b
    print ‘c=‘,c
    print ‘d=‘,d

if __name__ =="__main__":
    main()

执行结果:

a= [1, 2, 3, 4, 5, 6, [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘], 8]
b= [1, 2, 3, 4, 5, 6, [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘], 8]
c= [1, 2, 3, 4, 5, 6, [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]]
d= [1, 2, 3, 4, 5, 6, [‘a‘, ‘b‘, ‘c‘, ‘d‘]]

深拷贝将对象a 的子对象也进行了拷贝,所以,对对象a的子对象进行添加‘e‘操作对d无影响  

时间: 2024-10-07 08:17:02

ObjectCopy的相关文章

C#+arcengine10.0+SP5实现鹰眼(加载的是mdb数据库中的数据)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.esriSystem; using ES

Java学习笔记14

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中clone()方法是如何定义的: protected native Object clone() throws CloneNotSupportedException; 我们看到clone()方法前用了native来修饰,说明native方法的效率一般来说高于Java中的非native方法.其次用了 prote

Java语言的反射机制 笔记 摘自 http://blog.csdn.net/kaoa000/article/details/8453371

在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的.这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制. 1.Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类.在运行时构造任意一个类的对象.在运行时判断任意一个类所具有的成员变量和方法.在运行时调用任意一个对象的方法 2.Reflection 是Java被视为动态(或准动态)语言的一个关键性质.

第二十四部分_Java反射详解

Java语言的反射机制 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的.这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflection)机制. Java反射机制主要提供了以下功能 在运行时判断任意一个对象所属的类. 在运行时构造任意一个类的对象. 在运行时判断任意一个类所具有的成员变量和方法. 在运行时调用任意一个对象的方法. Reflection是Java被视为动态(或准动态)语言

null作为方法的参数,并在方法里面赋值后的结果是什么?

public class BeanCopyTest { public static void main(String[] args){ Student student = null; objectCopy(student); System.out.print(autoTenderSetDTO); } public static void objectCopy(Student student){ student = new Student(); student.setName("张三")

Java反射学习二

利用反射进行对象拷贝的例子 如下例程ReflectTester类进一步演示了Reflection API的基本使用方法. ReflectTester类有一个copy(Object object)方法,这个方法能够创建一个和参数object同样类型的对象,然后把object对象中的所有属性拷贝到新建的对象中,并将它返回. 这个例子只能复制简单的类,假定类的每个属性都有public类型的getXXX()和setXXX()方法. import java.lang.reflect.Constructor

Java笔记17:JAVA常用函数

** * 根据传入的格式获取日期 * * @param format *            如:YYYYMMDD || MM/dd/yyyy, hh:mm:ss * @return 字符串的日期 */ public String getSysDate(String format) { String dateStr = ""; try { Format formatter; Date date = new Date(); formatter = new SimpleDateForma

Java Method的invoke委托

Java Method的invoke委托 @author ixenos Class对象运行时构造并委托调用方法(Method类) 0.由Class对象动态构造对应类型对象 1.Class对象的getMethod方法,由方法名和形参构造Method对象 2.Method对象的invoke方法来委托动态构造的对应类型对象,使其执行对应形参的add方法 //动态构造InvokeTest类的实例Class<?> classType = InvokeTest.class; Object invokeTe

拷贝地图 CopyAndOverwriteMap()

private void CopyAndOverwriteMap() { //Get IObjectCopy interface IObjectCopy objectCopy = new ObjectCopyClass(); //Get IUnknown interface (map to copy) object toCopyMap = axPageLayoutControl1.ActiveView.FocusMap; //Each Map contained within the PageL