Esto probablemente se haya preguntado antes, pero no he podido encontrar la respuesta a mi pregunta específica (bastante general ...)¿Cómo organizar correctamente una definición de clase Python con respecto a los archivos auxiliares para esa clase?
Aquí hay un ejemplo de mi pregunta. Digamos que mi paquete se llama 'escuela', y tengo una clase llamada 'libro' que tendrá archivos .py al lado que contiene la carne de sus métodos. No estoy seguro de cómo organizarlo todo para que las declaraciones de importación no parezcan extrañas.
¿Cómo organizo los archivos?
/school/
pencil/
book/
__init__.py
read.py
burn.py
book.py
Quiero ser capaz de hacer algo como esto, ya que tiene más sentido:
from school import Book
b = Book(name="The Bible")
b.read()
Pero a partir de la estructura de archivos más arriba, tendría que hacer:
from school.book import Book
b = Book(....etc
O
from school import book
b = book.Book(...etc
T Estos son torpes/repetitivos ... ¿Qué me estoy perdiendo aquí?
Gracias por la respuesta. Pero, ¿y si mis métodos de lectura() y burn() son cientos de líneas cada uno y no quiero que book.py sea una enorme confusión de código? – Ian
¿Cada método tiene cientos de líneas? Honestamente, trataría de encontrar formas de refactorizar así que es una cantidad de funciones más cortas. Eso no siempre es posible, obviamente, pero aún así lo intentaré. Idealmente, desearía que cada función hiciera una cosa, y una sola cosa, y quisiera que encajara en una sola 'página' (ya sea una página impresa o una sola pantalla de su editor sin desplazarse). Dicho esto, incluso si tuviera algunas funciones que tuvieran varios cientos de líneas, igual las pondría todas en la misma clase. Se adapta mejor al modelo de objetos de Python y es más fácil encontrarlo todo. – Jonathanb
Luego, probablemente se puedan dividir en partes más pequeñas, dejándote con un montón de pequeños métodos privados y pequeños métodos de entrada pública read() y burn() que organizan el trabajo de los métodos más pequeños. Pero en cualquier caso, personalmente no veo que un método complejo sea más fácil de entender en un archivo separado (lejos de todo lo demás que se refiere en la clase) que en el archivo principal. – Ben