• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 04/02/2019

Customisez votre agent !

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans ce chapitre nous allons "transformer" nos agents JSON en agents Python. C'est parti !

Ajouter une méthode

Nous l'avons vu, une classe comprend des méthodes (fonctions d'une classe) et des attributs (variables d'une classe). Voyons tout de suite comment ajouter une méthode.

Nous allons faire en sorte qu'un agent nous dise bonjour. Hé oui, les gens sont polis dans notre monde ! 

 Modifions notre classe  en ajoutant une fonction à l'intérieur. Pensez bien à indenter ! 

class Agent:
  def say_hello(self, first_name):
    return "Bien le bonjour " + first_name + "!"

Exécutons ensuite la méthode.

Si nous essayons de l'exécuter en écrivant son nom, comme s'il s'agissait d'une simple fonction, Python renverra une erreur. Nous devons l'exécuter sur une instance. 

Kézako ?

Pour exécuter la méthode d'une classe, vous devez auparavant instancier une classe. Autrement dit, vous allez créer un nouvel objet à partir de cette dernière. 

Puis vous exécutez la méthode en ajoutant un point, le nom de votre méthode, les parenthèses et d'éventuels paramètres. Comme ceci :

agent = Agent()
print(agent.say_hello("Céline"))
"Bien le bonjour Céline !"

Et voilà ! Nous avons notre première méthode ! 

Ajouter un attribut

Ouvrons le JSON et intéressons-nous aux données d'un agent.

{"neuroticism": -0.0739192627121713, "language": "Shona", "latitude": -19.922097800281783, "country_tld": "zw", "age": 12, "income": 333, "longitude": 29.798455535838603, "sex": "Male", "religion": "syncretic", "extraversion": 1.051833688742943, "date_of_birth": "2005-01-10", "agreeableness": 0.1441229877537559, "id_str": "LB3-3Cl", "conscientiousness": 0.2419104411765549, "internet": false, "country_name": "Zimbabwe", "openness": -0.024607605122172617, "id": 6636726630}

De quels attributs avons-nous vraiment besoin pour le moment ? Commençons par agreeableness.

Comment ajouter un attribut à notre instance ? Pour l'instant, en fait, nous n'avons aucune manière de le faire. Pour ajouter, ou modifier, un attribut, nous devons avant tout modifier légèrement la méthode responsable de la création d'une instance.

Je reprends. :)

Lorsque vous écrivez variable = nomdelaclasse(), Python utilise une méthode spéciale pour créer votre instance. On l'appelle un constructeur car, comme son nom l'indique, la méthode a pour responsabilité de construire une nouvelle instance à partir de votre classe.  Heureusement, vous n'avez pas à créer cette méthode. Elle est déjà écrite en Python et vous n'avez qu'à l'appeler !

Cette méthode est __init__(). Un petit moyen mnémotechnique pour s'en souvenir est que cette méthode sert à initialiser une instance, d'où le nom "init"...

Par défaut, le constructeur crée une instance sans attribut. C'est-à-dire qu'il va créer un agent qui pourra bel et bien utiliser les autres méthodes de la classe mais qui n'aura aucun attribut. Pour les ajouter, dans ce cas, il faut le faire une fois que l'instance est créée.

Sauf que nous, nous voulons que tous nos agents aient, par défaut, certains attributs obligatoires comme le degré d'agréabilité ou leur position. Comment faire ? Nous allons modifier le constructeur en l'écrivant dans notre classe, comme nous l'avons déjà fait pour notre première méthode.

Commençons !

class Agent
  
  ...
  
  def __init__():
    agreeableness = 0

Néanmoins, si nous faisons cela, nous ajoutons une variable à notre classe mais nous ne l'associons pas vraiment à l'instance que nous sommes en train de créer.

L'instance est représentée par le mot-clé self que nous passons en paramètre. Si nous reprenons la métaphore de la gaufre, la classe est le moule et  self  est la gaufre qui est en train de cuire dans le moule. Pour y associer un attribut, nous utiliserons un point, comme ceci :

def init(self):
  self.agreeableness = 0

Si nous relançons notre script, nous voyons que nous avons bien accès à cet attribut :

class Agent:
    
    def __init__(self):
        self.agreeableness = 0

first_agent = Agent()
print(first_agent.agreeableness)

 

~/ python my_model.py
0

 Modifier des attributs

C'est un bon début !

Le problème est que nous avons un attribut par défaut (une agréabilité de 0), et que nous ne pouvons pas la faire varier d'une instance à l'autre. Si nous restons ainsi, tous nos agents auront la même agréabilité. Or, ce serait bien de faire passer la valeur de l'attribut en paramètre, non ? Par exemple, en écrivant  first_agent = Agent(0).

Comment faire ? De la même manière que vous le feriez avec une fonction classique : en créant un paramètre et en y associant une valeur lors de l'exécution la fonction. Démonstration : 

class Agent:
    
    def __init__(self, agreeableness):
        self.agreeableness = agreeableness

first_agent = Agent(0)
print(first_agent.agreeableness)

 

Challenge

 Réalisez le challenge de ce chapitre en cliquant sur ce lien. 

 

Nous savons désormais comment ajouter et modifier des attributs. Bien ! Mais vous vous doutez bien que nous n'allons pas réaliser la même opération pour chaque agent de notre JSON. Comment faire ? Voyons cela dans le prochain chapitre !

Exemple de certificat de réussite
Exemple de certificat de réussite