Domanda

È una cattiva pratica inizializzare gli oggetti nel modulo, nel codice del modulo?

in Module.py:

class _Foo(object):
    def __init__(self):
        self.x = 'Foo'

Foo = _Foo()

Che nel codice utente, potresti:

>>> from Module import Foo
>>> print Foo.x
'Foo'
>>>

... senza dover inizializzare la classe FOO nel codice utente. Naturalmente, utile solo se non hai bisogno di argomenti per inizializzare l'oggetto.

C'è un motivo per non farlo?

È stato utile?

Soluzione

In genere, vuoi solo eseguire il minimo necessario per avere il modulo utilizzabile. Ciò avrà un effetto complessivo sulle prestazioni (tempo di caricamento) e può anche semplificare il debug.
Inoltre, di solito verrà creata più di un'istanza da una determinata classe.

Detto questo, se hai buone ragioni (come voler solo un'istanza di una classe), allora sicuramente inizializzalo al tempo di caricamento.

Altri suggerimenti

Lo faccio a volte, quando è davvero conveniente, ma tendo a farlo foo = Foo(). Non mi piace davvero l'idea di far apparire la classe privata e rendere disponibile l'istanza Foo. Come sviluppatore che utilizza il tuo codice lo troverei piuttosto sconcertante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top