Définir une classe simple

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à améliorer une classe Stock conçue pour représenter des titres d'actions. Vous allez ajouter de nouvelles méthodes et fonctionnalités à cette classe, la rendant plus polyvalente et utile.

Les objectifs de ce laboratoire incluent l'ajout d'une méthode sell à la classe Stock existante, la création d'une fonction pour lire les données d'un portefeuille d'actions à partir d'un fichier CSV, et une autre fonction pour afficher les données du portefeuille dans un tableau formaté. Le fichier à modifier est stock.py.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 97%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

Ajout d'une méthode sell à la classe Stock

Dans cette étape, nous allons améliorer la classe Stock en ajoutant une nouvelle méthode. Une méthode est comme une fonction spéciale qui appartient à une classe et peut interagir avec les objets créés à partir de cette classe. Nous allons créer une méthode nommée sell(nshares) qui nous aidera à simuler l'action de vendre des actions d'une entreprise. Lorsque vous vendez des actions, le nombre d'actions que vous possédez diminue, et cette méthode se chargera de cette réduction pour nous.

Qu'est-ce qu'une méthode ?

Commençons par comprendre ce qu'est une méthode. Une méthode est une fonction définie à l'intérieur d'une classe. Elle est conçue pour opérer sur les instances (qui sont comme des copies individuelles) de cette classe. Lorsqu'une méthode est appelée sur un objet, elle peut accéder à tous les attributs (caractéristiques) de cet objet. Elle le fait grâce au paramètre self. Le paramètre self est une référence à l'objet sur lequel la méthode est appelée. Donc, lorsque vous utilisez self à l'intérieur d'une méthode, vous faites référence à l'objet spécifique sur lequel la méthode agit.

Instructions d'implémentation

  1. Tout d'abord, nous devons ouvrir le fichier stock.py dans l'éditeur. Pour ce faire, nous allons utiliser la ligne de commande. Ouvrez votre terminal et exécutez la commande suivante. Cette commande change le répertoire pour le dossier project où se trouve le fichier stock.py.
cd ~/project
  1. Une fois que vous avez ouvert le fichier stock.py, vous devez trouver un commentaire spécifique dans la classe Stock. Recherchez le commentaire ## TODO: Add sell(nshares) method here. Ce commentaire est un emplacement qui indique où nous devons ajouter notre nouvelle méthode sell.

  2. Maintenant, il est temps d'ajouter la méthode sell. Cette méthode prendra un paramètre appelé nshares, qui représente le nombre d'actions que vous souhaitez vendre. Le principal rôle de cette méthode est de diminuer l'attribut shares de l'objet Stock du nombre d'actions que vous vendez.

Voici le code de la méthode sell que vous devez ajouter :

def sell(self, nshares):
    self.shares -= nshares

Dans ce code, self.shares fait référence à l'attribut shares de l'objet Stock. L'opérateur -= soustrait la valeur de nshares de la valeur actuelle de self.shares.

  1. Après avoir ajouté la méthode sell, vous devez enregistrer le fichier stock.py. Vous pouvez le faire en appuyant sur Ctrl+S sur votre clavier ou en sélectionnant "File > Save" dans le menu de votre éditeur.

  2. Pour vous assurer que notre méthode sell fonctionne correctement, nous allons créer un script de test. Créez un nouveau fichier Python appelé test_sell.py et ajoutez le code suivant :

## test_sell.py
from stock import Stock

## Create a stock object
s = Stock('GOOG', 100, 490.10)
print(f"Initial shares: {s.shares}")

## Sell 25 shares
s.sell(25)
print(f"Shares after selling: {s.shares}")

Dans ce script, nous importons d'abord la classe Stock à partir du fichier stock.py. Ensuite, nous créons un objet Stock nommé s avec le symbole d'action GOOG, 100 actions et un prix de 490,10. Nous affichons le nombre initial d'actions. Ensuite, nous appelons la méthode sell sur l'objet s pour vendre 25 actions. Enfin, nous affichons le nombre d'actions après la vente.

  1. Maintenant, nous allons exécuter le script de test pour voir si notre méthode sell fonctionne comme prévu. Ouvrez à nouveau votre terminal et exécutez la commande suivante :
python3 test_sell.py

Si tout fonctionne correctement, vous devriez voir une sortie similaire à ceci :

Initial shares: 100
Shares after selling: 75

Cette sortie confirme que notre méthode sell fonctionne correctement. Elle a réussi à réduire le nombre d'actions du montant que nous avons spécifié.

✨ Vérifier la solution et pratiquer

Lecture d'un portefeuille à partir d'un fichier CSV

Dans cette étape, nous allons créer une fonction qui lit les données d'actions à partir d'un fichier CSV et renvoie une liste d'objets Stock. Un objet Stock représente une participation en actions, et à la fin de cette étape, vous pourrez lire un portefeuille d'actions à partir d'un fichier CSV.

Comprendre les fichiers CSV

CSV, qui signifie Comma-Separated Values (valeurs séparées par des virgules), est un format très courant pour stocker des données tabulaires. Imaginez-le comme une feuille de calcul simple. Chaque ligne dans un fichier CSV représente une ligne de données, et les colonnes au sein de cette ligne sont séparées par des virgules. Habituellement, la première ligne d'un fichier CSV contient les en-têtes. Ces en-têtes décrivent le type de données présent dans chaque colonne. Par exemple, dans un fichier CSV de portefeuille d'actions, les en-têtes pourraient être "Name", "Shares" et "Price".

Instructions d'implémentation

  1. Tout d'abord, ouvrez le fichier stock.py dans votre éditeur de code. S'il est déjà ouvert, c'est parfait ! Sinon, trouvez-le et ouvrez-le. C'est là que nous allons ajouter notre nouvelle fonction.

  2. Une fois le fichier stock.py ouvert, recherchez le commentaire ## TODO: Add read_portfolio(filename) function here. Ce commentaire est un emplacement qui nous indique où placer notre nouvelle fonction.

  3. En dessous de ce commentaire, ajoutez la fonction suivante. Cette fonction s'appelle read_portfolio, et elle prend un nom de fichier en argument. Le but de cette fonction est de lire le fichier CSV, extraire les données d'actions et créer une liste d'objets Stock.

def read_portfolio(filename):
    """
    Read a CSV file containing portfolio data and return a list of Stock objects.

    Args:
        filename (str): Path to the CSV file

    Returns:
        list: A list of Stock objects
    """
    portfolio = []

    with open(filename, 'r') as f:
        headers = next(f).strip().split(',')  ## Skip the header line

        for line in f:
            row = line.strip().split(',')
            name = row[0]
            shares = int(row[1])
            price = float(row[2])

            ## Create a Stock object and add it to the portfolio list
            stock = Stock(name, shares, price)
            portfolio.append(stock)

    return portfolio

Analysons ce que fait cette fonction. Tout d'abord, elle crée une liste vide appelée portfolio. Ensuite, elle ouvre le fichier CSV en mode lecture. L'instruction next(f) saute la première ligne, qui est la ligne d'en-tête. Après cela, elle parcourt chaque ligne du fichier. Pour chaque ligne, elle divise la ligne en une liste de valeurs, extrait le nom, le nombre d'actions et le prix, crée un objet Stock et l'ajoute à la liste portfolio. Enfin, elle renvoie la liste portfolio.

  1. Après avoir ajouté la fonction, enregistrez le fichier stock.py. Vous pouvez le faire en appuyant sur Ctrl+S sur votre clavier ou en sélectionnant "File > Save" dans le menu de votre éditeur de code. Enregistrer le fichier garantit que vos modifications sont conservées.

  2. Maintenant, nous devons tester notre fonction read_portfolio. Créez un nouveau script Python appelé test_portfolio.py. Ce script importera la fonction read_portfolio à partir du fichier stock.py, lira le portefeuille à partir d'un fichier CSV et affichera des informations sur chaque action du portefeuille.

## test_portfolio.py
from stock import read_portfolio

## Read the portfolio from the CSV file
portfolio = read_portfolio('portfolio.csv')

## Print information about each stock
for stock in portfolio:
    print(f"Name: {stock.name}, Shares: {stock.shares}, Price: ${stock.price:.2f}")

## Print the total number of stocks in the portfolio
print(f"\nTotal number of stocks in portfolio: {len(portfolio)}")

Dans ce script, nous importons d'abord la fonction read_portfolio. Ensuite, nous appelons la fonction avec le nom de fichier portfolio.csv pour obtenir la liste d'objets Stock. Après cela, nous parcourons la liste et affichons des informations sur chaque action. Enfin, nous affichons le nombre total d'actions dans le portefeuille.

  1. Pour exécuter le script de test, ouvrez votre terminal ou invite de commande, naviguez jusqu'au répertoire où se trouve le fichier test_portfolio.py et exécutez la commande suivante :
python3 test_portfolio.py

Si tout fonctionne correctement, vous devriez voir une sortie qui liste toutes les actions du fichier portfolio.csv, ainsi que leurs noms, le nombre d'actions et les prix. Vous devriez également voir le nombre total d'actions dans le portefeuille.

Name: AA, Shares: 100, Price: $32.20
Name: IBM, Shares: 50, Price: $91.10
Name: CAT, Shares: 150, Price: $83.44
Name: MSFT, Shares: 200, Price: $51.23
Name: GE, Shares: 95, Price: $40.37
Name: MSFT, Shares: 50, Price: $65.10
Name: IBM, Shares: 100, Price: $00.44

Total number of stocks in portfolio: 7

Cette sortie confirme que votre fonction read_portfolio lit correctement le fichier CSV et crée des objets Stock à partir de ses données.

✨ Vérifier la solution et pratiquer

Mise en forme et affichage des données du portefeuille

Dans cette étape, nous allons créer une fonction qui nous aidera à afficher les données du portefeuille dans un tableau bien organisé. Un portefeuille est une collection d'actions, et il est important de présenter ces données de manière claire et lisible. C'est là que la fonction print_portfolio(portfolio) entre en jeu. Cette fonction prendra un portefeuille en entrée et l'affichera dans un tableau avec des en-têtes et un alignement approprié.

Mise en forme de chaînes de caractères en Python

En Python, il existe plusieurs façons de formater des chaînes de caractères. La mise en forme de chaînes est une compétence cruciale car elle vous permet de présenter les données de manière plus organisée et conviviale.

  • L'opérateur % est un style plus ancien de mise en forme de chaînes. C'est comme un modèle où vous pouvez insérer des valeurs à des endroits spécifiques dans une chaîne.
  • La méthode str.format() est une autre façon. Elle offre plus de flexibilité et une syntaxe plus propre pour formater des chaînes.
  • Les f - strings sont une fonctionnalité introduite en Python 3.6 et versions ultérieures. Elles sont très pratiques car elles vous permettent d'intégrer des expressions à l'intérieur de littéraux de chaînes.

Pour cet exercice, nous utiliserons l'opérateur %. Il est particulièrement utile lorsque vous souhaitez créer des colonnes de largeur fixe, ce qui est exactement ce dont nous avons besoin pour notre tableau de portefeuille.

Instructions d'implémentation

  1. Tout d'abord, ouvrez le fichier stock.py dans votre éditeur. S'il est déjà ouvert, c'est parfait. C'est dans ce fichier que nous allons écrire notre fonction print_portfolio.

  2. Une fois le fichier ouvert, recherchez le commentaire ## TODO: Add print_portfolio(portfolio) function here. Ce commentaire est un marqueur qui nous indique où ajouter notre nouvelle fonction.

  3. En dessous de ce commentaire, ajoutez la fonction suivante :

def print_portfolio(portfolio):
    """
    Print the portfolio data in a nicely formatted table.

    Args:
        portfolio (list): A list of Stock objects
    """
    ## Print the header row
    print('%10s %10s %10s' % ('name', 'shares', 'price'))

    ## Print a separator line
    print('-' * 10 + ' ' + '-' * 10 + ' ' + '-' * 10)

    ## Print each stock in the portfolio
    for stock in portfolio:
        print('%10s %10d %10.2f' % (stock.name, stock.shares, stock.price))

Cette fonction imprime d'abord la ligne d'en-tête du tableau, puis une ligne de séparation, et enfin, elle parcourt chaque action du portefeuille et imprime ses détails de manière formatée.

  1. Après avoir ajouté la fonction, enregistrez le fichier. Vous pouvez le faire en appuyant sur Ctrl+S ou en sélectionnant "File > Save" dans le menu. Enregistrer le fichier garantit que vos modifications sont conservées.

  2. Maintenant, nous devons tester notre fonction. Créez un nouveau fichier appelé test_print.py. Ce fichier sera notre script de test. Ajoutez le code suivant :

## test_print.py
from stock import read_portfolio, print_portfolio

## Read the portfolio from the CSV file
portfolio = read_portfolio('portfolio.csv')

## Print the portfolio as a formatted table
print_portfolio(portfolio)

Ce script importe les fonctions read_portfolio et print_portfolio à partir du fichier stock.py. Il lit ensuite les données du portefeuille à partir d'un fichier CSV et utilise notre fonction print_portfolio nouvellement créée pour les afficher.

  1. Enfin, exécutez le script de test. Ouvrez votre terminal et entrez la commande suivante :
python3 test_print.py

Si tout fonctionne correctement, vous devriez voir une sortie comme celle-ci :

      name     shares      price
---------- ---------- ----------
        AA        100      32.20
       IBM         50      91.10
       CAT        150      83.44
      MSFT        200      51.23
        GE         95      40.37
      MSFT         50      65.10
       IBM        100      70.44

Cette sortie confirme que votre fonction print_portfolio fonctionne comme prévu. Elle met en forme et affiche les données du portefeuille dans un tableau avec des en-têtes et des colonnes alignées, ce qui facilite la lecture.

Comprendre la mise en forme de chaînes de caractères

Examinons de plus près comment fonctionne la mise en forme de chaînes de caractères dans la fonction print_portfolio.

  • %10s est utilisé pour formater une chaîne. Le 10 indique la largeur du champ, et le s signifie chaîne. Il aligne la chaîne à droite dans un champ de largeur 10.
  • %10d est pour formater un entier. Le 10 est la largeur du champ, et d représente un entier. Il aligne également l'entier à droite dans un champ de largeur 10.
  • %10.2f est utilisé pour formater un nombre à virgule flottante. Le 10 est la largeur du champ, et le .2 spécifie que nous voulons afficher le nombre à virgule flottante avec 2 décimales. Il aligne le nombre à virgule flottante à droite dans un champ de largeur 10.

Cette mise en forme garantit que toutes les colonnes de notre tableau sont correctement alignées, ce qui rend la sortie beaucoup plus facile à lire et à comprendre.

✨ Vérifier la solution et pratiquer

Résumé

Dans ce laboratoire (lab), vous avez appris à améliorer une classe Stock avec de nouvelles fonctionnalités. Vous avez ajouté une méthode sell pour simuler la vente d'actions, créé une fonction read_portfolio pour lire les données d'actions à partir d'un fichier CSV et les convertir en objets Stock, et développé une fonction print_portfolio pour afficher les données du portefeuille dans un tableau bien formaté.

Ces compétences, notamment la définition de méthodes dans une classe, la manipulation de fichiers et l'analyse de données, ainsi que la mise en forme de la sortie pour une meilleure lisibilité, sont fondamentales pour la programmation orientée objet en Python. Vous pouvez maintenant appliquer ces concepts pour créer des classes et des utilitaires plus complexes dans vos programmes Python.