Почему я не могу удалить метод / атрибут из окна Tkinter? - PullRequest
2 голосов
/ 10 сентября 2011

Я пытаюсь удалить метод из экземпляра класса, полученного из окна Tkinter, используя встроенную функцию delattr. Однако я получаю следующую ошибку. Что я делаю неправильно?

Ошибка:

AttributeError: Class instance has no attribute 'wm_title'

Пример:

import Tkinter as tk

class Class (tk.Tk) :
    def __init__ (self) :
        tk.Tk.__init__(self)

        # The method is clearly there, seeing as this works.
        self.wm_title('')

        # This raises an AttributeError.
        delattr(self, 'wm_title')


c = Class()
c.mainloop()

1 Ответ

2 голосов
/ 10 сентября 2011

Вы не можете удалить метод класса таким образом, потому что методы класса являются свойствами классов, а не объектов.

Когда вы вызываете метод через object.method(), python фактически вызывает Class.method(object). (Это также, почему вы должны объявить аргумент self в методах класса, но вы фактически не передаете значение для self при вызове этого метода.)

Если хочешь, можешь позвонить del Class.wm_title. (Я не уверен, почему вы хотите.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...