python中的属性错误。对象没有属性

python中的属性错误。对象没有属性,python,oop,Python,Oop,这段代码是一个更大的程序的一部分,该程序使用GoogleSheetsAPI从云数据库获取数据(虽然不太相关,但有一点上下文是不会有影响的!) 我在一个名为“oop.py”的python文件中有这段黑色代码 class SetupClassroom: def __init__(self, arraynumber='undefined', tkroot='undefined'): self.arraynumber = arraynumber self.tkro

这段代码是一个更大的程序的一部分,该程序使用GoogleSheetsAPI从云数据库获取数据(虽然不太相关,但有一点上下文是不会有影响的!)

我在一个名为“oop.py”的python文件中有这段黑色代码

class SetupClassroom:
    def __init__(self, arraynumber='undefined', tkroot='undefined'):
        self.arraynumber = arraynumber
        self.tkroot = tkroot

    def setarraynumber(self, number):
        from GUI_Stage_3 import showclassroom
        self.arraynumber = number
        print ('set array number:', number)

        showclassroom()

    def settkroot(self, tkrootinput):
        self.tkroot = tkrootinput
self.tkroot已由代码的另一部分分配。但是,当我在另一个类似这样的文件中调用'self.tkroot'时,这个位可以工作,因为我已经测试过它是否被分配

def showclassroom():
    from oop import SetupClassroom
    username = current_user.username
    classnumber = getnumberofuserclassrooms(username)
    if SetupClassroom.arraynumber > classnumber:
        errorwindow('you are not enrolled in that many classrooms!')
    else:

        classtoget = SetupClassroom.arraynumber
        print('classtoget:', classtoget)
        root = SetupClassroom.tkroot
        name_label = Label(root, text=classtoget)

        getclassroom(username, classtoget)
SetupClassroom = SetupClassroom
我得到这个错误

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
  File "/Users/jonathansalmon/PycharmProjects/Coursework_GUI/GUI_Stage2_better.py", line 176, in <lambda>
    l0 = ttk.Button(teacher_root, text=button0text, command=lambda: (SetupClassroom.setarraynumber(SetupClassroom, number=button0text), SetupClassroom.settkroot(SetupClassroom, 'teacher_root')))
  File "/Users/jonathansalmon/PycharmProjects/Coursework_GUI/oop.py", line 99, in setarraynumber
    showclassroom()
  File "/Users/jonathansalmon/PycharmProjects/Coursework_GUI/GUI_Stage_3.py", line 29, in showclassroom
    root = SetupClassroom.tkroot
AttributeError: type object 'SetupClassroom' has no attribute 'tkroot'
Tkinter回调中出现异常 回溯(最近一次呼叫最后一次): 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/\uuuuu init\uuuuuuuu.py”,第1705行,在调用__ 返回self.func(*args) 文件“/Users/jonathansalmon/PycharmProjects/Coursework\u GUI/GUI\u Stage2\u better.py”,第176行,在 l0=ttk.Button(教师根目录,text=button0text,command=lambda:(setup教室.setarraynumber(setup教室,number=button0text),setup教室.settkroot(setup教室,“教师根目录”)) 文件“/Users/jonathansalmon/PycharmProjects/Coursework_GUI/oop.py”,第99行,setarraynumber 展示教室() 文件“/Users/jonathansalmon/PycharmProjects/Coursework\u GUI/GUI\u Stage\u 3.py”,第29行,在Show教室中 root=setup教室.tkroot AttributeError:类型对象“setup教室”没有属性“tkroot” 我试着在python控制台中设置它,结果成功了,所以我不知道问题出在哪里。 如果有人能帮忙,我们将不胜感激 谢谢
John

您应该创建类的实例,它将在
\uuuu init\uuuu
中创建属性,
self.tkroot
是实例而不是类的属性:

setupClassroom = SetupClassroom()
print(setupClassroom.tkroot)

希望这会对您有所帮助。

您需要创建一个类的实例。我想知道为什么
设置教室。arraynumber
没有首先引发错误。啊,对不起,如果你理解你的意思,我确实意外地将其排除在主要问题之外,我现在要添加它(设置教室=设置教室)