Есть этот код:
# 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!
Вопросы:
- Почему оператор присваивания работает по-разному для фундаментального типа и объект класса (для основных типов он копирует по значению, для объекта класса он копирует по ссылке)?
- Как скопировать объекты класса только по значению?
- Как сделать ссылки на основные типы, например, в С++ int & b = a?