Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> свойство класса-список(list).Странное поведение, объясниче почему так... 
:(
    Опции темы
Orgy
Дата 3.8.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Всем привет, есть проблема-непонятка, приведу пример:
Код

class A(object):
    var = []
    var1 = 0

a = A()
a.var.append('123')
a.var1 +=1

print a.var  // ['123']
print A.var //  ['123']
print a.var1 // 1
print A.var1 // 0

Почему при создании объекта(экземпляра) класса А и изменении свойства объекта (a.var) меняется и значение свойства самого класса А (A.var), если тип свойства список(list), тогда как при изменении свойств объекта других типов (a.var1) значение свойства класса не изменяются. Помогите разобраться 
PM MAIL   Вверх
_Viper_
Дата 3.8.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: 10
Всего: 11



Списки это изменяемые обьекты, числа - нет. 
Когда ты делаешь a.var1 +=1 создаётся новый атрибут для обьекта а и он перекрывает атрибут класса A.var1.
PM MAIL   Вверх
Orgy
Дата 3.8.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Цитата

Списки это изменяемые обьекты, числа - нет.

 можно подробнее об этом. Честно говоря нигде об этом не слышал не читал...может ссылочкой поделитесь на доку...буду признателен


Это сообщение отредактировал(а) Orgy - 3.8.2009, 14:22
PM MAIL   Вверх
Daevaorn
Дата 3.8.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(Orgy @  3.8.2009,  15:21 Найти цитируемый пост)
 можно подробнее об этом. Честно говоря нигде об этом не слышал не читал...может ссылочкой поделитесь на доку...буду признателен


Цитата(http://docs.python.org/reference/datamodel.html#objects-values-and-types)
The value of some objects can change. Objects whose value can change are said to be mutable; objects whose value is unchangeable once they are created are called immutable. (The value of an immutable container object that contains a reference to a mutable object can change when the latter’s value is changed; however the container is still considered immutable, because the collection of objects it contains cannot be changed. So, immutability is not strictly the same as having an unchangeable value, it is more subtle.) An object’s mutability is determined by its type; for instance, numbers, strings and tuples are immutable, while dictionaries and lists are mutable.


PM MAIL WWW   Вверх
Orgy
Дата 3.8.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



огромное спасибо...век живи век учись. Оч признателен за ликбез
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.