Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 15, 2010 19:38:38

m00nk
От:
Зарегистрирован: 2010-09-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

странность PyQt

Вот протокол:

m00nk@m00nk-desktop:~$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt4.QtCore import *
>>> s = QStringList()
>>> s.append('aaaa')
>>> s.append('bbbb')
>>> s.append('cccc')
>>> s.append('dddd')
>>> s.append('eeee')
>>> s.append('ffff')
>>> s.append('gggg')
>>> for i in xrange(0, s.count()-1): s.takeAt(i)
...
PyQt4.QtCore.QString(u'aaaa')
PyQt4.QtCore.QString(u'cccc')
PyQt4.QtCore.QString(u'eeee')
PyQt4.QtCore.QString(u'gggg')
Ошибка сегментирования
m00nk@m00nk-desktop:~$
Вопрос: кто дурак? :(



Отредактировано (Окт. 15, 2010 19:40:08)

Офлайн

#2 Окт. 15, 2010 20:50:07

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

странность PyQt

takeAt, он удаляет строку из списка по индексу и возвращает ее. в результате индекс выходит за границу.

правильнее так:

while s:
print s.takeAt(0)



Отредактировано (Окт. 15, 2010 20:52:22)

Офлайн

#3 Окт. 15, 2010 20:58:57

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

странность PyQt

не нужно менять объект, по которому вы итерируетесь.
Иногда Питон подобную шутку прощает - а часто и бьет больно.



Офлайн

#4 Окт. 16, 2010 03:56:03

m00nk
От:
Зарегистрирован: 2010-09-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

странность PyQt

takeAt, он удаляет строку из списка
Странное название. Если бы это было pop или shift, то можно было бы догадаться, а так я себе весь мозг сломал :(

не нужно менять объект, по которому вы итерируетесь.
От, блин! Кто ж мог знать, что он изменяется… :(

Спасибо за помощь.



Отредактировано (Окт. 16, 2010 03:56:49)

Офлайн

#5 Окт. 16, 2010 08:08:31

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

странность PyQt

m00nk
От, блин! Кто ж мог знать, что он изменяется… :(
А документацию читать вам убеждения не позволяют?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Окт. 16, 2010 15:41:17

m00nk
От:
Зарегистрирован: 2010-09-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

странность PyQt

Прикол в том, что я читал ту документацию, которая автоматически устанавливается на машину вместе с PyQt, а там описание многих методов сводится к простому перечислению параметров… :(

За ссылочку спасибо.



Офлайн

#7 Окт. 17, 2010 01:52:56

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

странность PyQt

m00nk
Прикол в том, что я читал ту документацию, которая автоматически устанавливается на машину вместе с PyQt, а там описание многих методов сводится к простому перечислению параметров… sad
в таких случаях надо читать описание родительского класса



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version