Dois-je donner à mes membres de classe des valeurs par défaut comme ceci:
class Foo:
num = 1
ou comme ça?
class Foo:
def __init__(self):
self.num = 1
Dans cette question, j'ai découvert que dans les deux cas,
bar = Foo()
bar.num += 1
est une opération bien définie.
Je comprends que la première méthode me donnera une variable de classe alors que la seconde ne le fera pas. Cependant, si je n'ai pas besoin d'une variable de classe, mais que je dois uniquement définir une valeur par défaut pour mes variables d'instance, les deux méthodes sont-elles également bonnes? Ou l'un d'eux plus «pythonique» que l'autre?
Une chose que j'ai remarquée est que dans le didacticiel Django, ils utilisent la deuxième méthode pour déclarer des modèles. Personnellement, je pense que la deuxième méthode est plus élégante, mais j'aimerais savoir quelle est la méthode «standard».
self.attr = attr or []
dans la__init__
méthode. Il obtient le même résultat (je pense) et reste clair et lisible.