下面给出了课程,这将打印20_20。现在直到第5行代码相同,我不希望{i}更改if not exists (select name from syscolumns where name = 'emailbody' and id = OBJECT_ID('emailtb') and xtype = 167 and [length] = ??)
ALTER TABLE emailtb
ALTER COLUMN emailbody nvarchar(max)
的值时更改T.a
的值。怎么解决?
T1.a
预期产量为10_20。
答案 0 :(得分:5)
在第6. T1 = T
行中,您告诉python对名为T
的对象T1
进行新的引用。
当我改变T1.a的值
时,我不希望T.a的值发生变化
这不能按照你设置的方式完成,因为T和T1指向同一个对象。您可以通过注意T is T1
在python解释器中求值为True
来看到这一点。
似乎您可能希望实例化2个Test
个对象,每个对象都有自己的a
属性,因此更改一个对象不会影响另一个对象。
答案 1 :(得分:1)
你想要做的事情可能就是"深度复制" https://docs.python.org/2/library/copy.html
这允许您创建现有对象的副本,而不是引用。在使用对象时,我能想到的是传递值最接近的东西。
答案 2 :(得分:1)
您还可以使用Order
模块的copy
方法:
copy
有关详细信息,请查看import copy
T = Test(20)
T1 = copy.copy(T)
T1.a = 40
print T.a
# Output 20
print T1.a
# Output 40
文档,https://docs.python.org/2/library/copy.html
答案 3 :(得分:0)
通过 T1 = T ,你使两者都相同所以如果你改变T1它会影响T,反之亦然。你可以使用复制,深层复制等
if(distance(lat1, lon1, lat2, lon2, K) ==1){
alert("1000 m");
}
有关可变和不可变对象分配和值更改的更多信息,请参阅此link