У меня проблемы с пониманием этой ошибки.
В приведенном ниже коде, когда я использую tk.Frame
, все работает, как задумано.Однако, если я использую super()
, я получаю AttributeError
(' Объект приложения не имеет атрибута tk ').
class Application(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(self,parent) <----- This works
# super().__init__(self,parent) <------ This line throws an error
.
.
.
if __name__=='main':
root=tk.Tk()
Application(root).pack()
root.mainloop()
Насколько я понимаю, super(Application,self).__init__()
будетвызовите метод __init__
, ограниченный классом, за которым следует child
в MRO экземпляра, то есть класс tkinter.Frame
в моей ситуации.
Я подтвердил это, распечатав Application.__mro__
и проверив.
Так что мой вопрос, ссылаются ли оба super().__init__(self,parent)
и tk.Frame.__init__(self,parent)
на один и тот же __init__
метод класса tkinter.Frame
почему один выдает ошибку, а другой работает нормально?Я подозреваю, что у меня есть какое-то недопонимание, как работает super ().