Python 当您需要不同的参数时,如何在类中使用if/elif?
我正在做一个类,将所有关于pygame键盘的命令放入其中,至少是我需要的所有命令,但当我使用if或else等于我稍后要定义的“变量”时,它返回一个错误,告诉我它未定义 我不知道怎么用技术术语说,对不起,错了。我开始使用button作为Python 当您需要不同的参数时,如何在类中使用if/elif?,python,pygame,Python,Pygame,我正在做一个类,将所有关于pygame键盘的命令放入其中,至少是我需要的所有命令,但当我使用if或else等于我稍后要定义的“变量”时,它返回一个错误,告诉我它未定义 我不知道怎么用技术术语说,对不起,错了。我开始使用button作为key()参数,我得到了相同的错误,然后我尝试使用\uuuuu init\uuuuuuu(),但我还可以使用它(不确定如何使用),然后我以这种方式 class control(): def button(self, button): self
key()
参数,我得到了相同的错误,然后我尝试使用\uuuuu init\uuuuuuu()
,但我还可以使用它(不确定如何使用),然后我以这种方式
class control():
def button(self, button):
self.button = button
def exit(self):
if event.type == pygame.QUIT:
pygame.quit()
def key(self, axis, speed):
if event.type == pygame.KEYDOWN:
if event.key == self.button:
axis = 0
axis = speed
ctrl = control()
w = control().button(K_w)
s = control(K_s)
UP = control(K_UP)
DOWN = control(K_DOWN)
while True:
for event in pygame.event.get():
ctrl.exit()
w.key(y1, -5)
s.key(y1, +5)
UP.key(y2, -5)
DOWN.key(y2, +5)
文件“C:/Users/Smith/PycharmProjects/untitled/venv/test0002.py”,第25行,在
w=控制()按钮(K_w)
名称错误:未定义名称“K_w”
我想使用按键功能来定义按钮,以便以后每次键盘输入时都使用它,而不是每次都重新写入。错误消息
未定义名称“K_w”
发生,b因为您忘记了模块名称空间
常量的名称是pygame.K_w
,而不是K_w
。常量放置在pygame模块名称空间中
使用常量的全名:
w=control()
或导入pygame常量,请参见
从pygame.locals导入*
# [...]
w=控制()按钮(K_w)
此外,从未定义变量
w
,因为control()
会生成对象,但button()
不会返回任何值。方法按钮应返回self
:
class控件():
def按钮(自身,按钮):
self.button=按钮
回归自我
但是我建议在类控件中实现构造函数,而不是在方法按钮中实现构造函数(当然,您可以同时实现这两种方法):
class控件():
定义初始化(自,按钮=0):
self.button=按钮
ctrl=control()
w=控制(K_w)
s=控制(K_s)
向上=控制(K_向上)
向下=控制(K_向下)
方法键
必须返回参数轴的新值
:
class控件():
# [...]
def键(自身、轴、速度):
如果event.type==pygame.KEYDOWN:
如果event.key==self.button:
轴=速度
返回轴
y1,y2=0,0
尽管如此:
对于pygame.event.get()中的事件:
ctrl.exit()
y1=w键(y1,-5)
y1=s键(y1,+5)
y2=向上键(y2,-5)
Y2=向下。键(Y2,+5)
错误消息
未定义名称“K_w”
发生,b因为您忘记了模块名称空间
常量的名称是pygame.K_w
,而不是K_w
。常量放置在pygame模块名称空间中
使用常量的全名:
w=control()
或导入pygame常量,请参见
从pygame.locals导入*
# [...]
w=控制()按钮(K_w)
此外,从未定义变量w
,因为control()
会生成对象,但button()
不会返回任何值。方法按钮应返回self
:
class控件():
def按钮(自身,按钮):
self.button=按钮
回归自我
但是我建议在类控件中实现构造函数,而不是在方法按钮中实现构造函数(当然,您可以同时实现这两种方法):
class控件():
定义初始化(自,按钮=0):
self.button=按钮
ctrl=control()
w=控制(K_w)
s=控制(K_s)
向上=控制(K_向上)
向下=控制(K_向下)
方法键
必须返回参数轴的新值
:
class控件():
# [...]
def键(自身、轴、速度):
如果event.type==pygame.KEYDOWN:
如果event.key==self.button:
轴=速度
返回轴
y1,y2=0,0
尽管如此:
对于pygame.event.get()中的事件:
ctrl.exit()
y1=w键(y1,-5)
y1=s键(y1,+5)
y2=向上键(y2,-5)
Y2=向下。键(Y2,+5)
File "C:/Users/Smith/PycharmProjects/untitled/venv/test0002.py", line 25, in <module>
w = control().button(K_w)
NameError: name 'K_w' is not defined