Les dictionnaires Python peuvent-ils émuler des attributs d'objet ?
L'accès aux clés de dictionnaire en tant qu'attributs d'objet est pratique, mais soulève des questions sur des problèmes potentiels. Cet article explore l'utilisation d'AttrDict, une classe personnalisée conçue pour répondre à ce besoin.
Approche de classe personnalisée
Pour émuler les attributs d'objet pour un dictionnaire, on peut créer un sous-classe appelée AttrDict :
class AttrDict(dict): def __getattr__(self, attr): return self[attr] def __setattr__(self, attr, value): self[attr] = value
Avantages de la coutume Classe
Inconvénients de la classe personnalisée
Comment ça marche
Le La classe AttrDict s'attribue comme attribut interne __dict__ de l'objet. Cela relie l'espace de noms du dictionnaire aux attributs de l'objet, permettant l'accès via les deux syntaxes.
Raison d'être de Python pour ne pas fournir cette fonctionnalité
Python évite la fonctionnalité d'accès direct aux attributs pour empêcher pollution de l’espace de noms. L'attribution d'éléments de dictionnaire peut potentiellement remplacer les attributs de méthode, entraînant un comportement inattendu. Par exemple :
d = AttrDict() d.update({'items': ['jacket', 'necktie', 'trousers']}) for k, v in d.items(): # TypeError: 'list' object is not callable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!