Datenklassen in Python

Vaibhav Vaibhav 4 Dezember 2021
Datenklassen in Python

Die allgemeinen Klassen in Python oder einer anderen Programmiersprache sollen eine Entität darstellen. Da sie eine Entität darstellen, sind sie mit vielen Funktionen, Logik und Attributen gefüllt, wobei jede Funktion eine bestimmte Aufgabe ausführt und die Klassenattribute mit den Klassenfunktionen manipuliert werden.

Neben den allgemeinen Klassen gibt es noch einen weiteren Klassentyp, nämlich die Datenklasse. Dieser Artikel befasst sich mit Datenklassen, die nicht nur in Python, sondern auch in anderen Programmiersprachen zu finden sind.

Python-Datenklasse

Im Gegensatz zu diesen regulären Klassen sind Datenklassen darauf ausgerichtet, den Zustand einer Entität zu speichern. Sie enthalten nicht viel Logik. Sie speichern einige Daten, die eine Statistik eines Objekts oder einer Entität darstellen.

Lassen Sie uns die Datenklassen anhand eines Beispiels besser verstehen. Sie schreiben beispielsweise ein Programm, das versucht, das Verhalten eines Einkaufswagens in einem Bekleidungsgeschäft nachzuahmen. Der Warenkorb enthält Produkte oder Kleidung. Bedenken Sie, dass es drei Arten von Kleidung gibt, nämlich Kopfbedeckungen, Oberteile und Unterteile. Da nicht jedes Geschlecht jedes Tuch tragen kann, haben wir auch Informationen über das Geschlecht, für das ein Tuch hergestellt wird. Betrachten wir nur drei Kategorien: Männlich, Weiblich und Neutral (beide können es tragen). Jedes Produkt hat einen Namen, einen Preis, eine Größe und ein Unternehmen, von dem es hergestellt wurde.

Wenn wir nun ein Programm erstellen müssen, um einen Einkaufswagen zu imitieren, können wir zwei Klassen erstellen, nämlich ShoppingCart und Product. Die Klasse ShoppingCart enthält die gesamte Logik, wie das Hinzufügen und Entfernen von Produkten, das Manipulieren der Anzahl der Produkte, das Verfolgen der im Warenkorb befindlichen Produkte usw. Und ein einzelnes Produkt wird durch die Klasse Product repräsentiert . Product ist eine Datenklasse und repräsentiert nur ein Produkt.

Die Klasse Product sieht in etwa so aus.

class Product:
    """
    A class representing a product
    """

    def __init__(self, name, price, size, company, wearType, gender):
        self.name = name
        self.price = price
        self.size = size
        self.company = company
        self.wearType = wearType
        self.gender = gender

    def __hash__(self):
        """
        Returns a hash code for the class object
        """
        return hash(
            (self.name, self.price, self.size, self.company, self.wearType, self.gender)
        )

    def __eq__(self, other):
        """
        Checks weather two objects are equal or not
        """
        if not isinstance(other, Product):
            return False
        else:
            return (
                self.name,
                self.price,
                self.size,
                self.company,
                self.wearType,
                self.gender,
            ) == (
                other.name,
                other.price,
                other.size,
                other.company,
                other.wearType,
                other.gender,
            )

Wie Sie sehen, hat die Klasse Product keine Logik. Es stellt lediglich ein Produkt dar. So sieht eine Datenklasse aus, nur Attribute und minimale Logik.

Die beiden implementierten Funktionen sind notwendig, wenn die Datenklasse hashfähig sein soll. Wenn eine Klasse hashfähig ist, kann ihr Objekt als Schlüssel im Dictionary verwendet und auf feste Werte abgebildet werden. Da ein Hash-Code benötigt wird, um Werte zuzuordnen, sind diese beiden Funktionen unerlässlich.

Man kann auch die Funktion __repr__ implementieren, eine spezielle Methode, die die String-Darstellung eines Klassenobjekts zurückgibt.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Python Class

Verwandter Artikel - Python Dataclass