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