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 None
impedisce all'IDE di dedurre un tipo migliore per l'attributo, quindi è meglio usare invece un valore predefinito ragionevole (quando possibile).
typing
modulo, 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.name
o self.age
non __init__
vengono visualizzati nell'istanza self
, vengono visualizzati solo nella classe Person
.