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固定になっちゃってました。