Итак, я программирую свою программу Python с помощью MVC-Architecture, и я хочу, чтобы все было красиво и отделено друг от друга.Я не хочу, чтобы View моего GUI работал с экземпляром Controllers и так далее.Поэтому я создал абстрактный класс «IController», который является родительским для «Controller», который имеет все функции.В 'IController' у меня есть функции, к которым моя модель и представление должны получить доступ.Контроллер выглядит примерно так:
class IController:
def method(self):
pass
class Controller(IController):
self.x = 'Hello'
def method(self):
print('self.x)
Итак, где у меня раньше было
class Frame(tk.Frame):
def __init__ (self, controller):
self.controller = controller
button = tk.Button(self, command=lambda: self.controller.method()
Теперь я хочу превратить это в
class Frame(tk.Frame):
def __init__ (self, controller):
self._controller = type(controller)
button = tk.Button(self, command=lambda: self._controller.method()
Проблема здесьчто когда я это делаю, я не могу сохранить экземпляр моего класса 'Controller'.Мне это нужно, поскольку у экземпляра есть значения и методы, с которыми мне нужно здесь работать.Я также не могу сохранить экземпляр Controlle'r в 'IController', так как это абстрактный класс, поэтому я не буду его создавать и не могу ничего в нем сохранить.
Я ожидал, что онпросто работать, но я не уверен, возможно ли это сейчас.Я читал, что приведение не возможно в python, но я думаю, что должен быть другой способ исправить это.Когда я запустил его, он сказал мне, что мне не хватает «я».Я не могу отправить экземпляр контроллера с ним, тогда он не будет капсулирован.Есть ли способ обойти это?