这些变量赋值按我的预期工作:
>>> a = 3
>>> b = a
>>> print(a, b)
(3, 3)
>>> b=4
>>> print(a, b)
(3, 4)
Run Code Online (Sandbox Code Playgroud)
但是,这些分配的行为有所不同:
>>> class number():
... def __init__(self, name, number):
... self.name = name
... self.number = number
...
>>> c = number("one", 1)
>>> d = c
>>> print(c.number, d.number)
(1, 1)
>>> d.number = 2
>>> print(c.number, d.number)
(2, 2)
Run Code Online (Sandbox Code Playgroud)
与示例不同,为什么是c相同的?如何在类示例中执行类似的操作?也就是说,复制对象,然后更改它的一部分(这不会影响我借用属性的对象)?d(a, b)(a, b)(c, d)
有这个代码:
# assignment behaviour for integer
a = b = 0
print a, b # prints 0 0
a = 4
print a, b # prints 4 0 - different!
# assignment behaviour for class object
class Klasa:
def __init__(self, num):
self.num = num
a = Klasa(2)
b = a
print a.num, b.num # prints 2 2
a.num = 3
print a.num, b.num # prints 3 3 - the same!
Run Code Online (Sandbox Code Playgroud)
问题:
我为这样的变量分配了值.这很好用.
In [16]: var1 = var2 = 5
In [17]: var1 = 2
In [18]: var2
Out[18]: 5
In [19]: var1
Out[19]: 2
Run Code Online (Sandbox Code Playgroud)
与list完成相同的操作.
In [20]: list1 = list2 = []
In [21]: list1.append(5)
In [22]: list1
Out[22]: [5]
In [23]: list2
Out[23]: [5]
Run Code Online (Sandbox Code Playgroud)
同样的方法我初始化了两个列表.插入值后,list1但它的效果值list2.它是如何发生的.我想知道为什么会这样发生.有人请解释一下.
谢谢