相关疑难解决方法(0)

为什么变量=对象不像变量=数字那样工作

这些变量赋值按我的预期工作:

>>> 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)

python variables object python-2.7 python-3.x

19
推荐指数
5
解决办法
1831
查看次数

对象和基本类型的分配

有这个代码:

# 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)

问题:

  1. 为什么赋值运算符对基本类型和类对象的工作方式不同(对于基本类型,它按值复制,对于通过引用复制的类对象)?
  2. 如何只按值复制类对象?
  3. 如何为C++ int&b = a中的基本类型引用?

python

7
推荐指数
2
解决办法
2423
查看次数

为什么要在python中为两个列表分配

我为这样的变量分配了值.这很好用.

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.它是如何发生的.我想知道为什么会这样发生.有人请解释一下.

谢谢

python list python-2.7

0
推荐指数
1
解决办法
45
查看次数

标签 统计

python ×3

python-2.7 ×2

list ×1

object ×1

python-3.x ×1

variables ×1