Vous pouvez ajouter des attributs à un objet qui a un __dict__
.
-
x = object()
ne l'a pas, par exemple.
- Des chaînes et d'autres de simples builtin objets aussi de ne pas l'avoir.
- Classes à l'aide d'
__slots__
aussi ne pas l'avoir.
- Les Classes définies par
class
ont moins que la précédente déclaration s'applique.
Si un objet est à l'aide de __slots__
/ ne pas avoir un __dict__
, c'est généralement pour économiser de l'espace. Par exemple, en str
il serait exagéré d'avoir un dict - imaginer le montant de la météorisation pour une très courte chaîne.
Si vous voulez tester si un objet donné a un __dict__
, vous pouvez utiliser hasattr(obj, '__dict__')
.
Ce pourrait aussi être intéressant à lire:
Certains objets, tels que les types intégrés et de leurs instances (listes, tuples, etc.) n'ont pas d' __dict__
. Par conséquent attributs définis par l'utilisateur ne peuvent pas être mis sur eux.
Un autre article intéressant à propos de Python modèle de données, y compris __dict__
, __slots__
, etc. est - ce à partir de la référence sur python.