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__?
risposta
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.
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.
- 1. Perché Clang avvisa: `'&&' all'interno di '||'`?
- 2. Pylint - Pylint non è in grado di importare flask.ext.wtf?
- 3. Perché sympy sovrascrive `__new__` invece di` __init__`?
- 4. Perché Maven mi avvisa della codifica?
- 5. classe __init__ (non istanza __init__)
- 6. Perché Android avvisa l'utilizzo di dimensioni inferiori a 12sp?
- 7. Istanza Attributo nome_attributo definito al di fuori __init__
- 8. Pylint: l'importazione relativa dovrebbe essere
- 9. Come eseguire Pylint con PyCharm
- 10. SQLAlchemy non __init__ esecuzione
- 11. Come posso visualizzare gli ID dei messaggi di Pylint dopo pylint-1.0.0?
- 12. Perché il compilatore Delphi non avvisa per una costante ridefinita?
- 13. Costruttori Python e __init__
- 14. Configurazione di Pylint con PyDev
- 15. perché è __init__ modulo nel progetto Django caricato due volte
- 16. pylint non riconosce alcune delle librerie standard
- 17. Perché AdMob restituisce NO FILL
- 18. pylint avvertimento su 'tranne eccezioni:'
- 19. pylint ignorare per directory
- 20. Si dovrebbe specificare una firma di tipo per principale o no? Perché perché no?
- 21. Jenkins con pylint dà difetto di costruzione
- 22. Python __init__.py e classi
- 23. Pylint only Valutazione globale
- 24. Pylint non funziona all'interno di Spyder
- 25. Python eccellente eredità __init__
- 26. Avvisa sviluppatore di chiamare `super.foo()` in java
- 27. La semantica importa in lattice? Se no, perché no?
- 28. pylint messaggio: logging-format-interpolazione
- 29. Diversi modi di usare __init__ per PyQt4
- 30. Python __init__ setattr su argomenti?
Queste classi non hanno attributi o aggiungono attributi dopo la creazione dell'oggetto? – delnan
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
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