为了账号安全,请及时绑定邮箱和手机立即绑定

Discord.py 类定义在明确输入时没有得到变量

Discord.py 类定义在明确输入时没有得到变量

Helenr 2022-06-22 18:24:34
from discord.ext import commandsimport asyncioimport osimport randomimport reprefix = 'bz 'client = commands.Bot(command_prefix=prefix)@client.eventasync def on_ready():    print('Logged in as: ')    print(client.user.name)    print(client.user.id)    print('---------------')    await client.change_presence(activity=discord.Game(name='bz help'))class DataCreate(commands.Cog):    def __int__(self, client):        self.client = client    async def createdatacash(self, member):        path = 'bal_' + member + '.txt'        print('createddatacash')        if not os.path.isfile(path):            file = open(path, 'w+')            file.write('0')            file.close()            self.data = True    async def writefile(self, member, inputthing):        path = 'bal_' + member + '.txt'        if not os.path.isfile(path):            await DataCreate.createdatacash(member)        file = open(path, 'w+')        file.write(str(inputthing))        self.data = Trueclass GetCash(commands.Cog):    def __init__(self, client):        self.client = client    async def view_cash(self, member):        path = 'bal_' + member + '.txt'        if not os.path.isfile(path):            datacreate = DataCreate            await datacreate.createdatacash(member)        file = open(path, 'r')        output= file.read()        file.close()        self.data = output我的源代码在上面,我希望这就足够了我得到了错误missing 1 required positional argument: 'amount'此错误显示在:await cashmodify.addtobal(person, cash)我一直在尝试为python 3.7制作一个带有discord重写的经济机器人,我决定这次让自己更容易将它们保留在类中,然后在需要时使用它们,但每当我在discord中运行命令时,它说我缺少一个称为数量的必需位置参数。我试过从字符串和整数切换输入,我回头看了看课程,它仍然无法工作。我尝试过的另一件事是删除 commands.Cog,但这仍然不起作用。所以我很感激任何人能给我的帮助
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

当您创建一个类的实例并调用其方法之一时,self(代表您的类的实例)将作为参数传递给它。


此代码不会创建您的类的实例,它只是创建一个类对象:


>>> cashmodify = CashModify

>>> cashmodify

<class '__main__.CashModify'>

该addtobal方法是这样定义的addtobal(self, member, amount),而您是这样调用它的addtobal(person, cash)。


你得到一个错误,因为你没有创建类的任何实例CashModify:没有self属性,所以你的person和cash变量分别作为self和member参数传递,没有任何东西传递给amount。


要解决此问题,您必须根据您的__init__方法实例化您的类(创建它的实例)并将客户端变量传递给它:


cashmodify = CashModify(client)


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信