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.
Verwandter Artikel - Python Class
- Abstrakte Python-Eigenschaft
- Datenklassenvererbung in Python
- Python-Generator-Klasse
- Python-Klassenfabrik
- Python-Klassengleichheit
- Serialisiert ein Python-Klassenobjekt in JSON