在类内部定义函数并在类外部使用它

时间:2019-01-31 10:49:39

标签: python

对于我正在开发的游戏,我做了一个课程,并在我的课堂中创建了一个函数。但是,当我尝试在类之外调用此函数时,将显示错误。

游戏使用乌龟创建目标,并在用户单击目标或背景时计算命中和未命中。

class Application(Frame):
    def __init__(self, master):
        super().__init__(master)

    def deletescore():
        global score
        score -= 1

screen = Screen()
screen.title("Reflex Aim Training")
screen.bgcolor("grey")
screen.onclick(lambda x, y: deletescore())

screen.mainloop()

游戏窗口打开,但是当我尝试单击窗口时(通常算作未命中并从我的得分中减去1),我收到错误消息:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)
  File "C:\Program Files\Python36\lib\turtle.py", line 675, in eventfun
    fun(x, y)
  File "I:\My Drive\flowtest.py", line 279, in <lambda>
    screen.onclick(lambda x, y: deletescore())
NameError: name 'deletescore' is not defined

2 个答案:

答案 0 :(得分:2)

使用Application.deletescore()

答案 1 :(得分:0)

在类外定义函数,然后添加到其中。

class Application(Frame):
    def __init__(self, master):
        super().__init__(master)

def deletescore(self):
    global score
    score -= 1

Application.deletescore = deletescore

然后就可以使用它了。注意self参数。除非在此示例中以“静态方式”使用,否则类方法通常在类实例上运行。