Неизменного объект с двумя именами, связанными с ней:Instance атрибут переменчивость (очень простой)
xint=1
yint=xint
print yint #>>1
xint=2
print yint #>>1 - did not change as expected since yint refers to an immutable object
изменяемый объект с двумя именами, связанными с ней:
xmutable=[1,2,3]
ymutable=xmutable
print ymutable #>>[1,2,3]
xmutable[2]='yo'
print ymutable #>>[1,2,'yo'] - changed since the list object referred to was mutated, as expected
Имя привязанных к экземпляр, который мутирует:
class bob:
def __init__(self, n):
self.n=n
self.i=0
bob1=bob(2)
i = bob1.i
print i #>>0
bob1.i += 1
print i #>>0 - did not change, not what I expected.
Итак, и простите меня, если это действительно тупой вопрос, я рассматриваю глобальное имя i
как относящееся к атрибуту экземпляра bob1.i
(а не базовому целому числу), которое должно быть изменчивым. Я бы ожидал, что аналогично тому, как имя привязано к списку, что если в этом случае мутирует список (или атрибут экземпляра), все связанные с ним имена будут отражать это изменение (например, второй пример).
я не уверен, что вопрос, но 'i' делает _not_ держите ссылку на 'bob1.i', потому что она имеет неизменный тип (int). Объект 'instance attribute' не существует или что-то в этом роде. –
Итак, атрибуты экземпляра - это просто больше имен, которые относятся к фактическим базовым объектам? Значит ли это в основном означает, что имя 'i' является просто ссылкой на другое имя' bob1.i', это ссылка на целое число? Я был под ошибочным впечатлением, что атрибуты экземпляра были объектами, а не просто другим именем. – Solaxun