Considera la seguente classe:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
I miei colleghi tendono a definirlo così:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
Il motivo principale di ciò è che il loro editor di scelta mostra le proprietà per il completamento automatico.
Personalmente, non mi piace quest'ultimo, perché non ha senso che una classe abbia queste proprietà impostate None.
Quale sarebbe la migliore pratica e per quali motivi?
__init__già fornisce il completamento automatico ecc. Inoltre, usando Noneimpedisce all'IDE di dedurre un tipo migliore per l'attributo, quindi è meglio usare invece un valore predefinito ragionevole (quando possibile).
typingmodulo, che ti consentono di fornire suggerimenti all'IDE e alla linter, se quel genere di cose solletica la tua fantasia ...
self. Anche se non sono stati assegnati self.nameo self.agenon __init__vengono visualizzati nell'istanza self, vengono visualizzati solo nella classe Person.