首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python怎么定义新对象

2013-02-06 
python如何定义新对象rt。我试验了下,python传递对象也是传递的是对象的引用。这样的话,如果把对象当作参数

python如何定义新对象
rt。我试验了下,python传递对象也是传递的是对象的引用。这样的话,如果把对象当作参数传入一个函数中,而在这个函数中如果把这个参数赋值给另一个对象,这样如果改变这两个对象中任意个的值,这两个对象都会改变。
我想问的是,如何在被调用的方法中定义一个新的对象,就是另起用一块内存地址。
测试代码如下:不知道大侠们了解了没
def testModifyPara(para01):
    ret = {}
    ret = para01
    para01['aa'] = 'aaaa'
    ret['bb'] = 'bbbb'
    return ret

if __name__ == '__main__':
    para = {}
    print testModifyPara(para)
    print para
打印结果为:
{'aa': 'aaaa', 'bb': 'bbbb'}
{'aa': 'aaaa', 'bb': 'bbbb'}
-------------------------------------
我的想法是在testModifyPara()中像java一样,new一个新的ret,就是给ret新分配一块内存地址,使得我改变ret的时候(ret['bb'] = 'bbbb'),para01不会被改变 python
[解决办法]
试试copy模块的deepcopy
http://docs.python.org/2/library/copy.html
[解决办法]
一般重新赋值的话,就是新对象,如
x = 3
y = 3
此时,y与x不是同一个内存地址,除非是
x = 3
y = x
此时,y与x才是同一对象的引用。
如果不知道x的确切值,而要重新创建同样的对象,那么对于非嵌套类型,可以用浅拷贝:
import copy
x = [1, 2, 3]
y = copy.copy(x)
如果x是嵌套类型,则需要深拷贝:
import copy
x = [1, (1, 2), 3]
y = copy.deepcopy(x)

热点排行