Найти - Пользователи
Полная версия: Вопрос по вызову конструктора супер класса.
Начало » Python для новичков » Вопрос по вызову конструктора супер класса.
1
apt-get_me_a_beer
Всем здравствуйте! Пытаюсь сделать пример из книги Саммерфилда.
Делаю так:
import os

import Tkinter

class MainWindow(Tkinter.Frame):
def __init__(self, parent):
super(MainWindow, self).__init__(parent)

self.parent = parent
self.grid(row=0, columns=0)
etc...
Создаю объект:
application = Tkinter.Tk()
#path = os.path.join(os.path.dirname(__file__), "images/")
application.title("Testing")

window = MainWindow(application)
application.protocol("WM_DELETE_WINDOW", window.quit)
application.mainloop()
и в итоге ошибка:

super(MainWindow, self).__init__(parent)
TypeError: super() argument 1 must be type, not classobj


Кто нибудь объясните мне в чем проблема и как ее решить
gkraser
Функция super() предназначена для использования в new-style классах. В данном случае Tkinter.Frame - old-style класс. Поэтому писать нужно так:
...
class MainWindow(Tkinter.Frame):
def __init__(self, parent):
#super(MainWindow, self).__init__(parent)
Tkinter.Frame.__init__(self, parent)
...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB