OK Tengo 2 clases realmente grandes> 1k líneas cada una de las cuales actualmente se han dividido en varias. Luego se recombinan usando herencia múltiple. Ahora me pregunto, si hay alguna manera más limpia/mejor más pitonica de hacer esto. Completamente factorizarlos resultaría en cantidades interminables de llamadas self.otherself.do_something
, que no creo que es la forma en que debería hacerse.Diseño de clase Python - División de clases grandes en múltiples para funcionalidad de grupo
Para aclarar las cosas aquí es lo que se ve actualmente como:
from gui_events import GUIEvents # event handlers
from gui_helpers import GUIHelpers # helper methods that don't directly modify the GUI
# GUI.py
class GUI(gtk.Window, GUIEvents, GUIHelpers):
# general stuff here stuff here
Un problema que es resultado de esta protestó Pylint darme billones de "no init llamado"/"atributo indefinido"/"atributo accede antes de la definición "advertencias".
EDIT:
Es posible que desee echar un vistazo al código, para hacerse una idea acerca de lo que todo el asunto es en realidad.
http://github.com/BonsaiDen/Atarashii/tree/next/atarashii/usr/share/pyshared/atarashii/
Tenga en cuenta, realmente estoy intentando cualquier cosa para mantener esta cosa lo más seco posible, estoy usando pylint para detectar la duplicación de código, lo único que se queja de las importaciones son.
Algo no tiene sentido. La pregunta dice "> 1k líneas cada uno". El código real en el repositorio es de 356 líneas. Por favor, corrija la pregunta o el enlace. –
Debe resumir: http://github.com/BonsaiDen/Atarashii/blob/next/atarashii/usr/share/pyshared/atarashii/gui.py http://github.com/BonsaiDen/Atarashii/blob/ next/atarashii/usr/share/pyshared/atarashii/gui_events.py y http://github.com/BonsaiDen/Atarashii/blob/next/atarashii/usr/share/pyshared/atarashii/gui_helpers.py ya que he dividido el cosas (actualmente el único tiene 968 líneas, porque recientemente cambié algunas cosas a otros archivos). También vea los archivos de vista *, que en conjunto tienen 1,1k líneas. –