调用Tweepy Client.create_tweet提示缺少self参数问题咨询
报错根因
你是直接在tweepy.Client类上调用了实例方法create_tweet,没有先对类做实例化,才会触发缺少self参数的报错。
Python类中定义的普通实例方法,第一个参数self指代的是类初始化后生成的具体实例对象。直接通过类名调用方法时,Python不会自动传入这个实例参数,同时方法也拿不到你配置的鉴权信息,根本无法定位要操作的Twitter账号。
你当前的错误写法等价于:
# 错误示例:直接调用类的实例方法 import tweepy # 省略你配置的API_KEY、API_SECRET、ACCESS_TOKEN、ACCESS_TOKEN_SECRET四个变量 Client.create_tweet(text='test')
修复方案
按以下步骤调整代码即可:
- 先初始化
tweepy.Client实例,把你提前配置好的四个鉴权参数按字段传入,生成绑定了你账号权限的操作对象:client = tweepy.Client( consumer_key=API_KEY, consumer_secret=API_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET ) - 不要在
Client类上调用发推方法,改为在初始化得到的client实例上调用:# 测试发推 client.create_tweet(text='test') - 要实现随机选取预设文本发推的需求,搭配
random.choice从预设列表抽选内容即可:import random # 你的预设推文列表 preset_tweets = [ "第一条预设文案", "第二条预设文案", "第三条预设文案" ] selected_tweet = random.choice(preset_tweets) client.create_tweet(text=selected_tweet)
排查注意事项
- 区分类和实例的区别:
tweepy.Client只是定义好的类模板,本身不绑定任何账号信息,只有传入鉴权参数初始化得到的实例对象,才能实际调用接口发推 - 鉴权参数不要传错位:
consumer_key对应API key,consumer_secret对应API secret,参数顺序错了会报鉴权失败 - 请确认你安装的Tweepy版本为4.0及以上,低版本的Tweepy对Twitter API v2的
Client相关方法支持不完善,可能出现其他兼容问题
内容的提问来源于stack exchange,提问作者c0nfluks
相关产品推荐
相关产品推荐

