LINUX.ORG.RU

[python] Как не передавать self при вызове метода того же класса?

 


0

0

Есть класс, родителем которого является gtk.Window.

Вот такая проблема:
self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_MENU)
TypeError: set_type_hint() takes exactly 1 argument (2 given)
self он тоже считает.

Как вызвать метод без передачи self?

★★★★★

его не надо передавать он передается автоматически у тебя наверно было set_type_hint(self): pass

а ты ему зачем то передал gtk.gdk.WINDOW_TYPE_HINT_MENU, когда он ни каких параметров не ожидал

Trashman
()
Ответ на: комментарий от Trashman

Вообще-то ему надо передать только gtk.gdk.WINDOW_TYPE_HINT_MENU.
Для этого эта функция и нужна.

См. текст программы и ошибки выше.
http://library.gnome.org/devel/pygtk/stable/class-gtkwindow.html#method-gtkwi...
- вот формат вызова функции.

Может я и не прав насчет self, но функцию я вызываю правильно.
В результате - ошибка - лишний аргумент пишет.

Что делать?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от balodja

Вообще такие методы должны определяться с помощью декоратора @classmethod. Да и вдобавок странно, что self не нужен.

balodja ★★★
()
Ответ на: комментарий от balodja

Не знаю чего ему там не надо, но я ему передаю столько аргументов, сколько требуется.
Чего делать то?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

может все же не правильно вызываешь?

у меня такой код вполне работает

import gtk

class test(gtk.Window):
    def a(self):
        self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_MENU) 

window = test()
window.a()
window.show_all()

gtk.main()
Trashman
()
Ответ на: комментарий от Trashman

Нет. Не переопределял его.

ls-h ★★★★★
() автор топика

Весь код выложи.

Laz ★★★★★
()

очевидно что set_type_hint объявлен как set_type_hint(self) или set_type_hint(klass).

true_admin ★★★★★
()

Ну пусть будет так:

def set_type_hint(self, hint):

И пусть себе self передаётся.

friday ★★★
()
Ответ на: комментарий от anonymous

Да, наешл уже косяк. Прошу прощение...

ls-h ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.