Python 名称错误:名称'&书信电报;类名>';未定义问题

Python 名称错误:名称'&书信电报;类名>';未定义问题,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,我正在处理一个python汽车项目,我使用了class函数,这样我可以在一个项目中存储很多变量,但是当我尝试使用class变量时,它没有被发送/打印,它说NameError:name“p1”没有定义。我曾经遇到过另一个问题,它导致我出现了一个属性错误。我发现了这个问题并修复了它,结果发现我用相同的名称创建了另一个变量 顺便说一句,问题在于p1变量和p0变量 这是密码 # IMPORT DISCORD.PY. ALLOWS ACCESS TO DISCORD'S API. import disco

我正在处理一个python汽车项目,我使用了class函数,这样我可以在一个项目中存储很多变量,但是当我尝试使用class变量时,它没有被发送/打印,它说
NameError:name“p1”没有定义
。我曾经遇到过另一个问题,它导致我出现了一个属性错误。我发现了这个问题并修复了它,结果发现我用相同的名称创建了另一个变量

顺便说一句,问题在于p1变量和p0变量

这是密码

# IMPORT DISCORD.PY. ALLOWS ACCESS TO DISCORD'S API.
import discord

# IMPORT THE OS MODULE.
import os
import random
import time
# IMPORT COMMANDS FROM THE DISCORD.EXT MODULE.
from discord.ext import commands

BMW330i = 'https://automanager.blob.core.windows.net/wmphotos/037685/1844fa46dd334f7dae94afc9ca49aa8a/eaa2cae362_800.jpg'
HONDAs2000 = 'https://cimg3.ibsrv.net/cimg/www.s2ki.com/1600x900_85-1/343/1-Make-Improvements-408343.jpg'
NISSANsilvia ='https://static.carthrottle.com/workspace/uploads/posts/2015/12/9a8cd0a4a74fb73c29f564f6e33aa20f.jpg'

users = 0

class user:
    def __init__(self, name, car, car1,hp, hp1, carc, car1c, cari, car1i, money, daily):
        self.name = name
        self.car = car
        self.car1 = car1
        self.carc = carc
        self.car1c = car1c
        self.hp = hp
        self.hp1 = hp1
        self.money = money
        self.daily = daily
        self.cari = cari
        self.car1i = car1i

# CREATES A NEW BOT OBJECT WITH A SPECIFIED PREFIX. IT CAN BE WHATEVER YOU WANT IT TO BE.
bot = commands.Bot(command_prefix=";")

@bot.command()
async def test(message):
    p1 = user('imaad', 'd', 'd', 5, 5, 2, 2, 2, 2,2 ,2)
    await message.channel.send(p1.name)
@bot.command()
async def test1(message):
    global p1
    await message.channel.send(p1.name)

@bot.command()
async def reg(cxt):
    global users
    carstart = random.randint(1,3)
    if users == 0:
        await cxt.channel.send('Hey, ' + cxt.author.name)
        if carstart == 1:
            p0 = user(str(cxt.author), '2003 BMW 330i', 'Empty', (235), 'Empty', (9), 'Empty',  BMW330i, 'Empty', (1000), (0))
        if carstart == 2:
            p0 = user(str(cxt.author), '2000 Honda S2000', 'Empty', (240), 'Empty', (9), 'Empty',  HONDAs2000, 'Empty', (1000), (0))
        if carstart == 3:
            p0 = user(str(cxt.author),  '2000 Nissan Silvia', 'Empty', (243), 'Empty', (9), 'Empty',  NISSANsilvia, 'Empty', (1000), (0))
        await cxt.channel.send('Welcome to Brooklyn, ' + p0.name + ' lucky for you I managed to fetch a ' + p0.car + ' with ' + str(p0.hp) + 'HP')
        await cxt.channel.send(p0.cari)
        await cxt.channel.send(p0.name)
        users = users + 1
    else:
        await cxt.channel.send('k')
        




# EXECUTES THE BOT WITH THE SPECIFIED TOKEN. TOKEN HAS BEEN REMOVED AND USED JUST AS AN EXAMPLE.
bot.run('ODAxODA0NjY0ODM2MDYzMjQy.YAmAyA.snnqa9lOqYheREA0_PqH3GxK94E')

谢谢

您没有定义
p1
,您是在函数中定义的,因此它是一个局部变量,而不是全局

#不要在任何命令中定义它
p1=用户('imaad','d','d',5,5,2,2,2,2,2)
@bot.command()
异步def测试1(ctx):
等待ctx.发送(p1.名称)

另外,我不理解您的不一致性,在一个命令中您使用
ctx
作为参数,在其他命令中使用
消息
discord.py
不是这样工作的,它总是传递一个
commands.Context
实例作为第一个参数,因此
ctx

test
定义一个局部变量
p1
;您是否忘记了
global
语句?您还必须实际调用该函数以获得要定义的全局变量,因为您没有在任何一个函数之外定义
p1
。我发送了令牌以使其无效,在中重新生成您的令牌。请确保不要在代码中插入您的令牌。我刚刚更改了我的discord令牌hanks,因为他再次告诉我我是新来的。那么您建议我更改什么?(顺便说一句,很抱歉,我是新来的)不用担心,正如我在回答中所说,
p1
是局部变量,而不是全局变量,要使其具有全局性,您必须在全局范围内定义它,就像我在回答中提供的代码一样。现在,它表示用户未定义。您必须在创建
用户
类后定义它。更不用说它起作用了,谢谢!