Hatena::ブログ(Diary)

勉強不足

2012-01-15

twython1.4.5のバグ

趣味でTwitter Bot作るのにtwythonを使わせていただいたのですが
バグがあったので書き残しておきます。

twitter = Twython()
twitter.updateStatus(post='test')

とやってもなぜか
getFollowersStatusが呼ばれてました。(どの関数でも同じ)

調べた結果Twythonクラスのコンストラクタに問題があるようでした。

twython.py
version 1.4.5

178         # register available funcs to allow listing name when debugging.
179         for key in api_table.keys():
180             self.__dict__[key] = lambda **kwargs: self._constructFunc(key, **kwargs)

これを

178         # register available funcs to allow listing name when debugging.
179         def setFunc(key):
180             return lambda **kwargs: self._constructFunc(key, **kwargs)
181         for key in api_table.keys():
182             self.__dict__[key] = setFunc(key)

こんな感じに修正しました。

ループ内のクロージャだとうまくいかないアレ(JavaScriptとかActionScriptでよくやっちゃうやつ)のせいで参照先がgetFollowersStatus固定になっちゃってました。

Ryan McGrathRyan McGrath 2012/01/16 04:07 ありがとう!^_^ https://github.com/ryanmcgrath/twython/commit/fcbc702ae574a7a9852e251150ef64cd64c32a1c

tatz_tsuchiyatatz_tsuchiya 2012/01/19 01:53 反映していただいてありがとうございます。今後も利用させて頂きます!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/tatz_tsuchiya/20120115/1326623451
リンク元