Eine einfache Klasse definieren

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie lernen, eine Stock-Klasse zu verbessern, die zur Darstellung von Aktienbesitzungen dient. Sie werden neue Methoden und Funktionen zu dieser Klasse hinzufügen, um sie vielseitiger und nützlicher zu machen.

Zu den Zielen dieses Labs gehören das Hinzufügen einer sell-Methode zur bestehenden Stock-Klasse, das Erstellen einer Funktion zum Lesen von Aktienportfoliodaten aus einer CSV-Datei und einer weiteren Funktion zur Anzeige der Portfoliodaten in einer formatierten Tabelle. Die zu bearbeitende Datei ist stock.py.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 97% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Hinzufügen einer sell-Methode zur Stock-Klasse

In diesem Schritt werden wir die Stock-Klasse verbessern, indem wir eine neue Methode hinzufügen. Eine Methode ist wie eine spezielle Funktion, die zu einer Klasse gehört und mit den aus dieser Klasse erstellten Objekten arbeiten kann. Wir werden eine Methode namens sell(nshares) erstellen, die uns dabei hilft, den Vorgang des Verkaufs von Aktienanteilen zu simulieren. Wenn Sie Aktienanteile verkaufen, verringert sich die Anzahl der von Ihnen gehaltenen Anteile, und diese Methode wird diese Verringerung für uns handhaben.

Was ist eine Methode?

Lassen Sie uns zunächst verstehen, was eine Methode ist. Eine Methode ist eine Funktion, die innerhalb einer Klasse definiert wird. Sie ist so konzipiert, dass sie auf Instanzen (die wie individuelle Kopien sind) dieser Klasse operiert. Wenn eine Methode auf einem Objekt aufgerufen wird, kann sie alle Attribute (Eigenschaften) dieses Objekts zugreifen. Sie tut dies über den self-Parameter. Der self-Parameter ist eine Referenz auf das Objekt, auf dem die Methode aufgerufen wird. Wenn Sie also self innerhalb einer Methode verwenden, verweisen Sie auf das spezifische Objekt, auf das die Methode wirkt.

Implementierungsanweisungen

  1. Zunächst müssen wir die Datei stock.py im Editor öffnen. Dazu verwenden wir die Befehlszeile. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus. Dieser Befehl wechselt das Verzeichnis in den project-Ordner, in dem sich die Datei stock.py befindet.
cd ~/project
  1. Sobald Sie die Datei stock.py geöffnet haben, müssen Sie einen bestimmten Kommentar in der Stock-Klasse finden. Suchen Sie nach dem Kommentar ## TODO: Add sell(nshares) method here. Dieser Kommentar ist ein Platzhalter, der angibt, wo wir unsere neue sell-Methode hinzufügen sollten.

  2. Jetzt ist es an der Zeit, die sell-Methode hinzuzufügen. Diese Methode wird einen Parameter namens nshares akzeptieren, der die Anzahl der zu verkaufenden Aktienanteile darstellt. Die Hauptaufgabe dieser Methode besteht darin, das shares-Attribut des Stock-Objekts um die Anzahl der zu verkaufenden Aktienanteile zu verringern.

Hier ist der Code für die sell-Methode, den Sie hinzufügen müssen:

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

In diesem Code bezieht sich self.shares auf das shares-Attribut des Stock-Objekts. Der -=-Operator subtrahiert den Wert von nshares vom aktuellen Wert von self.shares.

  1. Nach dem Hinzufügen der sell-Methode müssen Sie die Datei stock.py speichern. Sie können dies tun, indem Sie Strg+S auf Ihrer Tastatur drücken oder "Datei > Speichern" aus dem Menü in Ihrem Editor auswählen.

  2. Um sicherzustellen, dass unsere sell-Methode korrekt funktioniert, erstellen wir ein Testskript. Erstellen Sie eine neue Python-Datei namens test_sell.py und fügen Sie den folgenden Code hinzu:

## 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}")

In diesem Skript importieren wir zunächst die Stock-Klasse aus der Datei stock.py. Dann erstellen wir ein Stock-Objekt namens s mit dem Aktiensymbol GOOG, 100 Anteilen und einem Preis von 490,10. Wir geben die anfängliche Anzahl der Anteile aus. Danach rufen wir die sell-Methode auf dem s-Objekt auf, um 25 Anteile zu verkaufen. Schließlich geben wir die Anzahl der Anteile nach dem Verkauf aus.

  1. Jetzt werden wir das Testskript ausführen, um zu sehen, ob unsere sell-Methode wie erwartet funktioniert. Öffnen Sie Ihr Terminal erneut und führen Sie den folgenden Befehl aus:
python3 test_sell.py

Wenn alles korrekt funktioniert, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

Initial shares: 100
Shares after selling: 75

Diese Ausgabe bestätigt, dass unsere sell-Methode korrekt funktioniert. Sie hat die Anzahl der Anteile erfolgreich um die von uns angegebene Menge verringert.

✨ Lösung prüfen und üben

Lesen eines Portfolios aus einer CSV-Datei

In diesem Schritt werden wir eine Funktion erstellen, die Aktiendaten aus einer CSV-Datei liest und eine Liste von Stock-Objekten zurückgibt. Ein Stock-Objekt repräsentiert eine Aktienbesitzung, und am Ende dieses Schritts können Sie ein Portfolio von Aktien aus einer CSV-Datei lesen.

Grundlegendes zu CSV-Dateien

CSV steht für Comma-Separated Values (Komma-separierte Werte) und ist ein sehr gängiges Format zum Speichern tabellarischer Daten. Stellen Sie sich eine CSV-Datei wie eine einfache Tabellenkalkulation vor. Jede Zeile in einer CSV-Datei repräsentiert eine Datenzeile, und die Spalten innerhalb dieser Zeile werden durch Kommas getrennt. Normalerweise enthält die erste Zeile einer CSV-Datei die Überschriften. Diese Überschriften beschreiben, welche Art von Daten in jeder Spalte enthalten sind. Beispielsweise könnten die Überschriften in einer CSV-Datei für ein Aktienportfolio "Name", "Anzahl" und "Preis" sein.

Implementierungsanweisungen

  1. Öffnen Sie zunächst die Datei stock.py in Ihrem Code-Editor. Wenn sie bereits geöffnet ist, ist das super! Wenn nicht, suchen Sie sie und öffnen Sie sie. Hier werden wir unsere neue Funktion hinzufügen.

  2. Sobald die Datei stock.py geöffnet ist, suchen Sie nach dem Kommentar ## TODO: Add read_portfolio(filename) function here. Dieser Kommentar ist ein Platzhalter, der uns sagt, wo wir unsere neue Funktion platzieren sollen.

  3. Unterhalb dieses Kommentars fügen Sie die folgende Funktion hinzu. Diese Funktion heißt read_portfolio und nimmt einen Dateinamen als Argument entgegen. Der Zweck dieser Funktion besteht darin, die CSV-Datei zu lesen, die Aktiendaten zu extrahieren und eine Liste von Stock-Objekten zu erstellen.

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

Lassen Sie uns analysieren, was diese Funktion tut. Zunächst erstellt sie eine leere Liste namens portfolio. Dann öffnet sie die CSV-Datei im Lesemodus. Die Anweisung next(f) überspringt die erste Zeile, die die Überschriftenzeile ist. Danach durchläuft sie jede Zeile in der Datei. Für jede Zeile teilt sie die Zeile in eine Liste von Werten auf, extrahiert den Namen, die Anzahl der Anteile und den Preis, erstellt ein Stock-Objekt und fügt es der portfolio-Liste hinzu. Schließlich gibt sie die portfolio-Liste zurück.

  1. Nach dem Hinzufügen der Funktion speichern Sie die Datei stock.py. Sie können dies tun, indem Sie Strg+S auf Ihrer Tastatur drücken oder "Datei > Speichern" aus dem Menü in Ihrem Code-Editor auswählen. Das Speichern der Datei stellt sicher, dass Ihre Änderungen beibehalten werden.

  2. Jetzt müssen wir unsere read_portfolio-Funktion testen. Erstellen Sie ein neues Python-Skript namens test_portfolio.py. Dieses Skript wird die read_portfolio-Funktion aus der Datei stock.py importieren, das Portfolio aus einer CSV-Datei lesen und Informationen über jede Aktie im Portfolio ausgeben.

## 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)}")

In diesem Skript importieren wir zunächst die read_portfolio-Funktion. Dann rufen wir die Funktion mit dem Dateinamen portfolio.csv auf, um die Liste der Stock-Objekte zu erhalten. Danach durchlaufen wir die Liste und geben Informationen über jede Aktie aus. Schließlich geben wir die Gesamtanzahl der Aktien im Portfolio aus.

  1. Um das Testskript auszuführen, öffnen Sie Ihr Terminal oder die Eingabeaufforderung, navigieren Sie zum Verzeichnis, in dem sich die Datei test_portfolio.py befindet, und führen Sie den folgenden Befehl aus:
python3 test_portfolio.py

Wenn alles korrekt funktioniert, sollten Sie eine Ausgabe sehen, die alle Aktien aus der Datei portfolio.csv auflistet, zusammen mit ihren Namen, der Anzahl der Anteile und den Preisen. Sie sollten auch die Gesamtanzahl der Aktien im Portfolio sehen.

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

Diese Ausgabe bestätigt, dass Ihre read_portfolio-Funktion die CSV-Datei korrekt liest und Stock-Objekte aus ihren Daten erstellt.

✨ Lösung prüfen und üben

Formatieren und Ausgeben der Portfolio - Daten

In diesem Schritt werden wir eine Funktion erstellen, die uns hilft, Portfolio - Daten in einer gut organisierten Tabelle anzuzeigen. Ein Portfolio ist eine Sammlung von Aktien, und es ist wichtig, diese Daten auf klare und lesbare Weise darzustellen. Hier kommt die Funktion print_portfolio(portfolio) ins Spiel. Diese Funktion nimmt ein Portfolio als Eingabe und zeigt es in einer Tabelle mit Überschriften und korrekter Ausrichtung an.

String - Formatierung in Python

In Python gibt es mehrere Möglichkeiten, Strings zu formatieren. Die String - Formatierung ist eine entscheidende Fähigkeit, da sie es Ihnen ermöglicht, Daten auf organisierte und benutzerfreundliche Weise darzustellen.

  • Der % - Operator ist ein älteres Formatierungsverfahren für Strings. Es ist wie eine Vorlage, in der Sie Werte an bestimmten Stellen in einem String einfügen können.
  • Die Methode str.format() ist eine andere Möglichkeit. Sie bietet mehr Flexibilität und eine sauberere Syntax für die String - Formatierung.
  • f - Strings sind eine Funktion, die ab Python 3.6 eingeführt wurde. Sie sind sehr praktisch, da sie es Ihnen ermöglichen, Ausdrücke direkt in String - Literalen einzubetten.

Für diese Übung verwenden wir den % - Operator. Er ist besonders nützlich, wenn Sie Spalten mit fester Breite erstellen möchten, was genau für unsere Portfolio - Tabelle erforderlich ist.

Implementierungsanweisungen

  1. Öffnen Sie zunächst die Datei stock.py in Ihrem Editor. Wenn sie bereits geöffnet ist, ist das gut. In dieser Datei werden wir unsere print_portfolio - Funktion schreiben.

  2. Sobald die Datei geöffnet ist, suchen Sie nach dem Kommentar ## TODO: Add print_portfolio(portfolio) function here. Dieser Kommentar ist ein Marker, der uns sagt, wo wir unsere neue Funktion hinzufügen sollen.

  3. Unterhalb dieses Kommentars fügen Sie die folgende Funktion hinzu:

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))

Diese Funktion gibt zunächst die Kopfzeile der Tabelle aus, dann eine Trennlinie und schließlich durchläuft sie jedes Aktienobjekt im Portfolio und gibt seine Details in formatierter Form aus.

  1. Nach dem Hinzufügen der Funktion speichern Sie die Datei. Sie können dies tun, indem Sie Strg+S drücken oder "Datei > Speichern" aus dem Menü auswählen. Das Speichern der Datei stellt sicher, dass Ihre Änderungen beibehalten werden.

  2. Jetzt müssen wir unsere Funktion testen. Erstellen Sie eine neue Datei namens test_print.py. Diese Datei wird unser Testskript sein. Fügen Sie den folgenden Code hinzu:

## 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)

Dieses Skript importiert die Funktionen read_portfolio und print_portfolio aus der Datei stock.py. Dann liest es die Portfolio - Daten aus einer CSV - Datei und verwendet unsere neu erstellte print_portfolio - Funktion, um sie anzuzeigen.

  1. Abschließend führen Sie das Testskript aus. Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein:
python3 test_print.py

Wenn alles korrekt funktioniert, sollten Sie eine Ausgabe wie die folgende sehen:

      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

Diese Ausgabe bestätigt, dass Ihre print_portfolio - Funktion wie erwartet funktioniert. Sie formatiert und zeigt die Portfolio - Daten in einer Tabelle mit Überschriften und ausgerichteten Spalten an, was es einfach macht, die Daten zu lesen.

Verständnis der String - Formatierung

Schauen wir uns genauer an, wie die String - Formatierung in der print_portfolio - Funktion funktioniert.

  • %10s wird verwendet, um einen String zu formatieren. Die 10 gibt die Breite des Feldes an, und das s steht für String. Es richtet den String rechtsbündig in einem Feld der Breite 10 aus.
  • %10d ist für die Formatierung einer Ganzzahl. Die 10 ist die Feldbreite, und d steht für Ganzzahl. Es richtet die Ganzzahl ebenfalls rechtsbündig in einem Feld der Breite 10 aus.
  • %10.2f wird für die Formatierung einer Gleitkommazahl verwendet. Die 10 ist die Feldbreite, und das .2 gibt an, dass wir die Gleitkommazahl mit 2 Dezimalstellen anzeigen möchten. Es richtet die Gleitkommazahl rechtsbündig in einem Feld der Breite 10 aus.

Diese Formatierung stellt sicher, dass alle Spalten in unserer Tabelle richtig ausgerichtet sind, was die Ausgabe viel einfacher zu lesen und zu verstehen macht.

✨ Lösung prüfen und üben

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie eine Stock - Klasse mit neuer Funktionalität erweitern können. Sie haben eine sell - Methode hinzugefügt, um das Verkaufen von Anteilen zu simulieren, eine read_portfolio - Funktion erstellt, um Aktiendaten aus einer CSV - Datei zu lesen und in Stock - Objekte umzuwandeln, und eine print_portfolio - Funktion entwickelt, um Portfolio - Daten in einer gut formatierten Tabelle anzuzeigen.

Diese Fähigkeiten, einschließlich der Definition von Methoden in einer Klasse, der Arbeit mit Dateien und der Datenanalyse sowie der Formatierung von Ausgaben für eine bessere Lesbarkeit, sind grundlegend für die objektorientierte Programmierung in Python. Sie können diese Konzepte nun anwenden, um in Ihren Python - Programmen komplexere Klassen und Hilfsmittel zu erstellen.