2 votes

Python OOP Assignation automatique d'arguments de mots-clés

Je suis novice en programmation et je suis tombé sur ce morceau de code dans le fil de discussion suivant : Attribuer les arguments de la fonction à `self`.

class C(object):
      def __init__(self, **kwargs):
             self.__dict__ = dict(kwargs)
c = C(g="a",e="b",f="c")
print(c.g,c.e,c.f)

Output:
a b c

Cela permettrait de saisir un nombre quelconque d'arguments de mots-clés et de les attribuer aux attributs en conséquence.

Mes questions sont les suivantes :

  1. Pourquoi cela fonctionne-t-il ? Que fait le self.__dict__ faire ici ?
  2. Y a-t-il une autre utilisation de self.__dict__ ?

J'apprécierais également tout type de ressources qui pourraient m'aider à le comprendre. Merci d'avance.

0voto

Yashi Points 1
Here **kwargs represent one can take any number of parameters.  

c = C(g="a",e="b",f="c") means that:  
variable g = "a" 
variable e = "b" 
variable f = "c"

Here self.__ dict __ contains the dictionary as: {g: "a", e: "b", f:"c"}

  __ dict __ is A dictionary or other mapping object used to store an object’s (writable) attributes.  

  Or speaking in simple words every object in python has an attribute which is denoted by __ dict __.  

 And this object contains all attributes defined for the object. __ dict __ is also called mappingproxy object.

0voto

PILLI VINEETH Points 21

Soi. dict est un dictionnaire qui contient des paires clé-valeur d'un objet particulier et de ses attributs. Il est généralement utilisé pour répertorier tous les attributs et leurs valeurs d'un objet particulier.

Dans cet exemple, self. dict est {g : "a",e : "b",f : "c"}

**kwargs est utilisé lorsque nous ne savons pas combien de mots-clés sont donnés lors de la création de l'objet. Ainsi, en convertissant kwargs en un dictionnaire et en l'assignant au self. dict revient à créer tous les attributs et à définir leurs valeurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X