DocString

Une docstring est une chaîne de caractères littérale qui apparaît comme première déclaration dans la définition d’un module, d’une fonction, d’une classe ou d’une méthode.

Une telle chaîne devient l’attribut spécial __doc__ de cet objet.

 

Quelques règles

Les recommandations en matière de rédaction des docstrings se trouvent résumées dans la PEP 257.

Les points essentiels sont les suivants :

  • Utiliser des guillemets triples pour entourer les docstrings : """ ma docstring """,
  • La docstring se termine par un point : . ,
  • Elle doit décrire la commande de la fonction (c’est-à-dire ce que fait la fonction),
  • Si nous devons ajouter plus d’informations (par exemple, sur les arguments), nous devons laisser une ligne vide entre le résumé de la fonction/classe et une description plus détaillée,
  • Les docstrings à plusieurs lignes sont acceptables si elles améliorent la lisibilité,
  • Il doit y avoir une description des arguments, de la sortie, des exceptions, etc…

Notez qu’il ne s’agit que de recommandations et non de règles strictes

Il existe d’autres recommandations plus précises, comme par exemple :

 

 

Docstrings pour Fonctions

La docstring d’une fonction ou d’une méthode doit résumer son comportement et documenter ses arguments et ses valeurs de retour. Elle doit également énumérer toutes les exceptions qui peuvent être soulevées et d’autres arguments facultatifs.

def add_binary(a, b):
   '''
   Returns the sum of two decimal numbers in binary digits.

      Parameters
      ----------
         a (int): A decimal integer
         b (int): Another decimal integer

      Returns
      -------
         binary_sum (str): Binary string of the sum of a and b
   '''
   binary_sum = bin(a+b)[2:]
   return binary_sum

 

 

Docstrings pour Classes

Les docstrings des classes doivent résumer leur comportement et énumérer les méthodes publiques et les variables d’instance. Les sous-classes, les constructeurs et les méthodes doivent avoir leurs propres docstrings.

class Person:
   """
   A class to represent a person.

   ...

   Attributes
   ----------
   name : str
   first name of the person
   surname : str
   family name of the person
   age : int
   age of the person

   Methods
   -------
   info(additional=""):
   Prints the person's name and age.
   """

   def __init__(self, name, surname, age):
      """
      Constructs all the necessary attributes for the person object.

         Parameters
         ----------
            name : str
            first name of the person
            surname : str
            family name of the person
            age : int
            age of the person
      """

      self.name = name
      self.surname = surname
      self.age = age

   def info(self, additional=""):
      """
      Prints the person's name and age.

      If the argument 'additional' is passed, then it is appended after the main info.

         Parameters
         ----------
            additional : str, optional
            More info to be displayed (default is None)

      Returns
      -------
         None
      """

      print(f'My name is {self.name} {self.surname}. I am {self.age} years old.' + additional)

 

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *