Я делаю графический интерфейс с помощью Swing из Jython. Обработка событий выглядит особенно элегантно в Jython, просто установите
JButton("Push me", actionPerformed = nameOfFunctionToCall)
Однако, пробовать то же самое в классе становится сложно. Наивно пытаясь
JButton("Push me", actionPerformed = nameOfMethodToCall)
или
JButton("Push me", actionPerformed = nameOfMethodToCall(self))
из GUI-метода построения класса не работает, потому что первый аргумент вызываемого метода должен быть self , чтобы получить доступ к данным-членам класса и с другой стороны, невозможно передать какие-либо аргументы обработчику событий через очередь событий AWT. Похоже, что единственной опцией является использование лямбды (как указано в http://www.javalobby.org/articles/jython/), что приводит к чему-то вроде этого:
JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
Это работает, но элегантность исчезла. Все это только потому, что вызываемому методу требуется ссылка self откуда-то. Есть ли другой способ обойти это?