Non sono d'accordo con gli altri e dico di sì. Per me, ho avuto un successo migliore mettendo ogni classe in un proprio file (modulo). Ma ci sono delle eccezioni quindi lasciatemi spiegare un esempio.
Se si dispone di una classe Foo, poi metterlo in un file chiamato Foo.py, con le seguenti sezioni:
- Importazioni
- Questo è dove si tira in dipendenze.
- Esempi:
import math
, from Bar import *
- Globali
- Questo è dove si definisce l'interfaccia esterna al modulo, che sono tutti i simboli che si trovano al di fuori visibile di questo modulo.
- Esempio:
__all__ = ['Foo']
- Questo è anche il punto in cui è possibile definire variabili globali (non valide) e costanti globali (buone). Questi globali non devono essere esportati; possono essere resi globali solo per semplificare il codice.
- Esempio:
PI = 3.14159
significa che è possibile scrivere PI
, mentre se lo si è definito all'interno della classe Foo, è necessario scrivere Foo.PI
.
- Funzioni
- Questo è dove si definiscono tutte le funzioni di primo livello che sono rilevanti per classe Foo, ma non appartieni alla classe Foo spazio dei nomi. Questi sono probabilmente rari in quanto le classi consentono sia il
@staticmethods
che le classi interne.
- Esempio:
def print_foo(foo): print(foo)
- Classi
- Esempio:
class Foo(object): pass
A volte si vuole mettere più di una classe nello stesso modulo. Dovresti farlo quando due o più classi sono concettualmente correlate al punto in cui le utilizzerai quasi sempre insieme e mai in modo indipendente. Questa è l'eccezione, non la norma. In questo caso, aggiungi tutti i nomi di classe allo __all__
globale.
Infine, per ogni modulo Foo.py, dovrebbe esserci un modulo di test dell'unità corrispondente denominato testFoo.py.
fonte
2011-01-12 18:25:31
Provenendo da Java Ho avuto questa stessa domanda, ragazzo ero confuso per un po '. :-) – snarkyname77
È interessante notare che PyDev ti offre la possibilità di fare proprio questo. – Uri
Se si importa una classe da un file con più classi, l'interprete non eseguirà tutte le classi in quel file? –