|
|
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
Пишу такую конструкцию: Код: python 1. 2. 3. 4. 5. 6. Использую так: Код: python 1. 2. 3. 4. 5. 6. 7. 8. Цикл валится, ибо " RuntimeError: dictionary changed size during iteration". Как манипуляции с w2 трогают w1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 18:11:21 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
В process на самом деле стоит self.mydict, забыл здесь написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 18:13:43 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
zagustitel, А вы уверены, что хотели именно так написать? Ибо словарь относится к калссу, а не к экземпляру класса. Может лучше так? Код: python 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 18:17:11 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
NekZzagustitel, А вы уверены, что хотели именно так написать? Ибо словарь относится к калссу, а не к экземпляру класса. Может лучше так? Код: python 1. 2. 3. 4. 5. Я питон плохо знаю, но сделал вывод о том как правильно из такого эксперимента: Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Печатает: Код: python 1. 2. Что говорит о том, что вызовы w1.f1() не влияют на w2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 18:45:59 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
zagustitel, А что вы на это скажете? Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Выводит: {'a': 1, 'c': 3, 'b': 2} {'a': 1, 'c': 3, 'b': 2} Process finished with exit code 0 Константные типы и ссылки - разные вещи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:03:30 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
Если дописать ещё Код: python 1. 2. 3. 4. 5. 6. То id объектов совпадает Выводит 25683616 25683616 Process finished with exit code 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:07:29 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
zagustitel, Непонятен смысл этой конструкции: Код: python 1. 2. Вам нужен генератор словарей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:07:54 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
Usmanzagustitel, Непонятен смысл этой конструкции: Код: python 1. 2. Вам нужен генератор словарей? Код бессмысленный, там только структура важна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:10:26 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
NekZЕсли дописать ещё Код: python 1. 2. 3. 4. 5. 6. То id объектов совпадает Выводит 25683616 25683616 Process finished with exit code 0 Понимать! Какой злой питон. А почему моя фигня с w1, w2 работает тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:19:48 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
zagustitel, А может стоит почитать мануалы по питону? :) Вообще лучше сделать как я сказал в своём первом посте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:29:53 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
zagustitel, Код: python 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:37:58 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
NekZzagustitel, А может стоит почитать мануалы по питону? :) Вообще лучше сделать как я сказал в своём первом посте Я так и сделаю. И мораль про идентификаторы понятна. Но история с w1, w2 ведь как-то работает, собака. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:42:19 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
Usmanzagustitel, Код: python 1. 2. 3. 4. 5. Это да. Я даже copy.deepcopy() успел заюзать для этого dictionary от безысходности. Но теперь меня научили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2012, 19:43:16 |
|
||
|
Создание объектов некоторых классов в Python. Ссылки, копирование и т.п.
|
|||
|---|---|---|---|
|
#18+
zagustitelНо история с w1, w2 ведь как-то работает, собака. Дело в том, что там тип int, объекты которого не изменяются. И операции выполняете над ним путём присваивания . В случае со словарём оперируем с ним путём вызова методов . Суть в том, что в вашем первом примере идёт вызов методы __setitem__ у словаря (как operator[] в C++), который изменяет словарь, принадлежащий объекту метакласса -- классу. Если бы вы присваивали словарю другой словарь - то не было бы такого, я атвичаю . Читайте про аттрибуты и про последовательность получения аттрибута. На хабре есть статеечка - в ней описано как работает эта магия (пункт Соль ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2012, 05:46:33 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=37974991&tid=1464648]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 393ms |

| 0 / 0 |
