inohilog

/var/log/inohiro

リストの中身の順序が変化しちゃう副作用(?

  • Skype4Py を使ってる。とても便利
  • 同じチャットに2回以上連続で投稿しようとすると、1度投稿した後にリストの中身の順序が変わってしまう
    • 順序が保証されてないんだろうから添字をハードコーディングするべきではないんだろう
    • 毎回タイトルを見たり、正規表現するのが正しいのかな
#!/usr/bin/python                                                                                   
# -*- coding: utf-8 -*-                                                                             

import Skype4Py

s = Skype4Py.Skype()
s.Attach()

print s.Chats
s.Chats[1].SendMessage( "hogehoge" )
print s.Chats
s.Chats[1].SendMessage( "FUGAFUGA" ) # 添字は変えてないんだけど、投稿先が変化する
print s.Chats
inohiro@ubuntu:~$ python hoge.py 
(<Skype4Py.chat.IChat object at 0xb7575bcc with Name=u'#account_a/$account_b;accountb_uid'>, <Skype4Py.chat.IChat object at 0xb7575d8c with Name=u'#account_c/$account_c_uid'>)
(<Skype4Py.chat.IChat object at 0xb7575d8c with Name=u'#account_c/$account_c_uid'>, <Skype4Py.chat.IChat object at 0xb7575c6c with Name=u'#account_b/$account_b_uid'>)
(<Skype4Py.chat.IChat object at 0xb7575a8c with Name=u'#account_a/$account_b;account_b_uid'>, <Skype4Py.chat.IChat object at 0xb7575e4c with Name=u'#account_c/$account_c_uid'>)
  • 出力のアカウント名は適当に書き変えてる
    • uid と書いてるけど、それが本当にユーザーを一意に識別可能な文字列なのかは不明
  • 一時的に変数に入れておけば、と思ってやってみたけどダメだ
$ python hoge.py 
Traceback (most recent call last):
  File "hoge.py", line 9, in <module>
    chat = s.Chat[1]
TypeError: 'instancemethod' object is unsubscriptable