You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python子类调用父类方法触发NameError报错求助

解决NameError: name 'userTurn' is not defined的问题

这个错误的根源很清晰:你在lambda表达式里直接调用userTurn,但这个方法是父类playGame的实例方法,必须通过当前类的实例(也就是self)来访问,不能直接用方法名调用。

你的GUI类继承了playGame,当前实例self拥有父类的所有方法,所以只需要把lambda里的userTurn改成self.userTurn就能解决问题。

修正后的代码如下:

class GUI(playGame):
    def __init__(self):
        import tkinter as tk
        home=tk.Tk()
        home.title("Tic Tac Toe")
        home.geometry("160x180")
        w,h=6,3
        # 这里将userTurn改为self.userTurn,绑定当前实例
        self.c1r1=tk.Button(text='',width=w, height=h, command=lambda: self.userTurn(self.c1r1))
        self.c1r1.grid(column=1,row=1)
        home.mainloop()

再补充个小解释:

  • 实例方法的调用必须依附于类的实例,self就是当前GUI类的实例,通过它可以访问到继承自playGame的userTurn方法。
  • 你之前的写法相当于在全局作用域查找userTurn函数,但这个方法只存在于playGame的实例中,所以才会抛出NameError。

内容的提问来源于stack exchange,提问作者Husun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:31:27