У вас, кажется, есть несколько заблуждений.
Вы используете методы здесь.(Вы имели в виду «функции», например, не принадлежащие к классу?)
Классы не являются неким контейнером или пространством имен для функциональности.Они определяют тип данных .Смысл наличия класса WebParser в том, что вы можете иметь более одного WebParser .
В Python классы также являются объектами.Прямо сейчас вы не заставляете TheParser
быть WebParser
;вы делаете его псевдонимом для самого класса.Другими словами, TheParser
теперь больше или меньше соответствует «концепции веб-парсера».
Передача параметров не является «бессмысленной»;это то, как вы получаете информацию между функциями.Вы не (обычно!) Проходите занятия;Вы передаете экземпляры классов.Независимо от того, используете вы классы или нет, у вас будет в основном одна и та же проблема общения.
Это очень просто исправить.Прежде всего, необходимо создать WebParser, поэтому мы позаботимся об этом, используя его конструктор.Затем, наш экземпляр TheGUI
(плохое имя, кстати, «the» на самом деле не принадлежит) должен знать о нашем экземпляре, поэтому мы передаем его конструктору.Таким образом, экземпляр может сохранить ссылку на него и использовать его для вызова метода LoadThread
.Также необходимо сохранить ссылку на textbox
, чтобы эту информацию можно было передавать по LoadThread
.
Это выглядит так:
class MyGUI(wx.Frame):
def __init__(self, title, size, loader):
wx.Frame.__init__(self, None, 1, title, size=size)
# The GUI is made ...
textbox.TextCtrl(panel1, 1, pos=(67,7), size=(150, 20))
self.textbox = textbox
button1.Bind(wx.EVT_BUTTON, self.button1Click)
self.loader = loader
self.Show(True)
def button1Click(self, event):
self.loader.LoadThread(get_thread_id(), self.textbox)
class WebParser:
def LoadThread(self, thread_id, a_textbox):
do_something_with(a_textbox)
TheGUI = MyGUI("Text RPG", (500,500), WebParser())
TheApp.MainLoop()