2012-02-01 20 views
18

Abbiamo numerose classi Python che non sembrano aver bisogno di __init__, inizializzarle vuote è perfettamente accettabile o addirittura preferibile. PyLint sembra pensare che questa sia una brutta cosa. Mi manca qualche idea sul perché l'__init__ non sia un cattivo odore? O dovrei semplicemente sopprimere questi avvertimenti e superarli?Perché PyLint avvisa di no __init__?

+0

Queste classi non hanno attributi o aggiungono attributi dopo la creazione dell'oggetto? – delnan

+0

O. Nel primo caso, posso vedere che è di per sé un cattivo odore, ma non voglio che io entri in questo momento. In quest'ultimo caso, preferisco avere l'attributo Exception se provo ad usarlo prima di un'inizializzazione significativa. – Pete

+0

vorresti avere un codice e un output di pylint da mostrare? Pylint di solito si lamenta di __init__ per qualche motivo. Se davvero no, allora ha bisogno di una correzione :) – sthenault

risposta

11

A cosa servono queste classi?

Se si tratta solo di un raggruppamento di funzioni che non hanno bisogno di mantenere alcun stato, non è necessario un __init__() ma sarebbe più sensato spostare semplicemente tutte queste funzioni nel proprio modulo.

Se mantengono uno stato (hanno variabili di istanza), è probabile che si disponga di un valore __init__() in modo che tali variabili possano essere inizializzate. Anche se non si forniscono mai valori per loro quando viene creata la classe, è generalmente una buona idea averli definiti in modo che le chiamate al metodo non stiano facendo riferimento a variabili di istanza che potrebbero o meno esistere.

Detto questo, se non è necessario un __init__(), sentitevi liberi di ignorare tale avviso.

modifica: In base al tuo commento, sembra che tu stia bene con l'AttributeError che otterrai sul riferimento alle variabili prima dell'inizializzazione. Questo è un modo perfetto per programmare le tue lezioni, quindi in questo caso ignorare l'avviso di PyLint è ragionevole.

1

In genere si utilizza almeno il metodo __init__() per inizializzare le variabili di istanza. Se non stai facendo questo, allora con tutti i mezzi disattivare questo avviso.

Problemi correlati