はじめまして。
Python3.6でtwitterのユーザーストリームを取得するコードを書いていますが、
納得のいかないエラーが出て困っています。
下記ソースコードです。
python
1from requests_oauthlib import OAuth1Session 2 3USER_TL = "https://api.twitter.com/1.1/statuses/user_timeline.json" 4API_KEY = "*" 5API_SECRET_KEY = "*" 6ACCESS_TOKEN = "*" 7ACCESS_TOKEN_SECRET = "*" 8 9class Twitterclass: 10 def __init__(self,key,secret_key,token,secret_token): 11 self.twitter = OAuth1Session(key, secret_key, token, secret_token) 12 self.param = { 13 "screen_name": "apple", 14 "count": 200, 15 "include_entities": True, 16 "exclude_replies": False, 17 "include_rts": False, 18 } 19 20 def get_user_timeline(self): 21 self.twitter.get(USER_TL,self.param) 22# Twitterclass END 23 24twitter = Twitterclass(API_KEY, 25 API_SECRET_KEY, 26 ACCESS_TOKEN, 27 ACCESS_TOKEN_SECRET) 28twitter.get_user_timeline()
下記エラーメッセージです。
error
1TypeError: get() takes 2 positional arguments but 3 were given
エラー箇所は、下記コード部分です。
Python
1 self.twitter.get(USER_TL,self.param)
他サイト様で調べたところ、
Class内メソッドでClass内変数を呼び出す際、暗黙的にSelfが引数が呼ばれている、
との記載がありましたがいまいち理解が及ばずにいます。
下記コードのように、selfが暗黙的に引数として呼ばれていることは理解しています。
Python
1 self.twitter.get(self,USER_TL,self.param)
何故エラーが発生しているか、正しい書き方はどのような書き方か、
ご教授頂ければ幸いです。
また、Classの使い方が間違っている等ありましたら、
そちらもご指摘頂ければ幸いです。
長々と失礼致しました。
追記:
can110様
ご返信、ご回答頂きました方々、ありがとうございました。
ご回答、ご指摘頂きましたとおり、変更したコードを下記に示します。
python
1from requests_oauthlib import OAuth1Session 2 3USER_TL = "https://api.twitter.com/1.1/statuses/user_timeline.json" 4API_KEY = "*" 5API_SECRET_KEY = "*" 6ACCESS_TOKEN = "*" 7ACCESS_TOKEN_SECRET = "*" 8 9class Twitterclass: 10 def __init__(self,key,secret_key,token,secret_token): 11 self.twitter = OAuth1Session(key, secret_key, token, secret_token) 12 self.param = { 13 "screen_name": "apple", 14 "count": 200, 15 "include_entities": True, 16 "exclude_replies": False, 17 "include_rts": False, 18 } 19 20 def get_user_timeline(self): 21 return self.twitter.get(url = USER_TL,params = self.param) 22# Twitterclass END 23 24twitter = Twitterclass(API_KEY, 25 API_SECRET_KEY, 26 ACCESS_TOKEN, 27 ACCESS_TOKEN_SECRET) 28user_timeline = twitter.get_user_timeline()
回答3件
あなたの回答
tips
プレビュー