Python缺少参数

时间:2018-12-01 15:22:08

标签: python python-3.x

我的错在哪里

”此代码只是我的代码的一部分 我只是复制了一部分”

import turtle

wn=turtle.Screen()
wn.bgcolor("black")
wn.title("Pacman")
wn.setup(900,700)
class Pacman(turtle.Turtle):
    def __init__(self):
        turtle.Turtle.__init__(self)
        self.shape("square")
        self.color("yellow")
        self.penup()
        self.speed(0)
    def up(self):
        self.goto(self.xcor(),self.ycor()+24)
    def down(self):
        self.goto(self.xcor(),self.ycor()-24)
    def left(self):
        self.goto(self.xcor()-24,self.ycor())
    def right(self):
        self.goto(self.xcor()+24,self.ycor())

wn.listen()
wn.onkey(Pacman.down, "Down")
wn.onkey(Pacman.up, "Up")
wn.onkey(Pacman.right, "Right")
wn.onkey(Pacman.left, "Left")
wn.tracer(0)

while True:
   wn.update()

失败

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\asus\AppData\Local\Programs\Python\Python37- 
32\lib\tkinter\__init__.py", line 1702, in __call__

return self.func(*args)

File "C:\Users\asus\AppData\Local\Programs\Python\Python37- 
32\lib\turtle.py", line 686, in eventfun

fun()
TypeError: up() missing 1 required positional argument: 'self'

当我单击“向右”,“向下”,“向上”或“向左按钮”正方形不动时,在控制台中写入失败

3 个答案:

答案 0 :(得分:0)

“吃豆人”是一个类模板,因此您不能像这样调用方法。您应该创建一个Pacman对象(如下所示):

new_pacman = Pacman()

然后您可以像这样运行函数:

new_pacman.up()

或者(如果我没记错的话),您可以尝试一下,我认为应该也可以:

Pacman().up() which 

答案 1 :(得分:0)

pacman_instance = Pacman()之前做wn.listen()

问题是您正在尝试对类而不是类的实例进行操作

答案 2 :(得分:0)

如果您仅在行Pacman = Pacman()前添加wn.listen(),它将起作用!

问题是您正在尝试访问未实例化的类,并使用此行创建此实例,并且一切将正常运行;)