Seite 1 von 1
Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:19
von Mr. R341
Laut Aufgabenstellung soll ich in diesen Code eine Instanz mit dem Namen ShoppingCart machen.
Aber ich versteht nicht ganz, was gemeint ist...
Könnt ihr mir da helfen?
Ich möchte nicht die Lösung wissen, sondern was genau die Aufgabe von mir will...
Was genau ist mit "Instanz" gemeint?
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:29
von Sirius3
Bitte keine Bilder posten, sondern den Code ins Forumpost kopieren.
Python2 sollte man nicht mehr benutzen und daher auch nicht damit lernen.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene. Ein Kurs der was anderes zeigt, sollte man nicht verwenden.
Strings setzt man auch nicht mit + zusammen, sondern benutzt Stringformatierung.
Das items_in_cart ist etwas lang, wenn die Klasse schon ShoppingCart heißt, da würde `items` reichen.
Ein ganz großer Fehler, ist, dass items_in_cart ein Klassenattribut ist. Klassenattribute werden sehr selten gebraucht und dann sollten das Konstanten sein. Das Beispiel ist also kaputt und sollte nicht verwendet werden.
`not product in items` sollte `product not in items` sein.
In der Aufgabenstellung heißt es, dass man eine Instanz mit Namen my_cart von der Klasse ShoppingCart erzeugen soll.
Alles in Python ist eine Instanz von irgendetwas anderem. Oft wird von Objekten geredet, die eine Instanz von einer Klasse sind.
Bei a = 17 ist a eine Instanz der Klasse int mit dem Wert 17.
Mit b = str(a) wird eine Instanz der Klasse str erzeugt.
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:36
von Mr. R341
mir ist das Alter von Python2 bewusst und auch den schon gegebene(nicht selbst geschriebene) Code würde ich anders schreiben..
Aber meine Frage ist, was genau eine Instanz von "ShoppingCart" mit dem Namen "my_cart" sein soll...
Will die Aufgabe, dass ich eine neue Funktion hinzufüge? eine Neue Classe? Irgendwas anderes?
Auch das mit den 4 Leerzeichen bzw. 2x TAB ist mir auch bewusst, stört mich aber hier nicht... Ich lerne Python 2 um ein Grundverständnis vom Programmieren zu bekommen. Nachdem ich den Python 2 Kurs gemacht habe, schau ich mir nochmal an, was genau in Python 3 anders ist, bzw. verändert wurde, was schwerer gemacht wurde, was einfacher gemacht wurde usw...
EDIT:
Das mit den 4 Leerzeichen aka 2x TAB stört mich auf der Website nicht... Wenn ich mit VSCode arbeite sinds ja automatisch 4 Teerzeichen...
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:40
von Mr. R341
Sirius3 hat geschrieben: Donnerstag 15. Oktober 2020, 12:29
Bei a = 17 ist a eine Instanz der Klasse int mit dem Wert 17.
Mit b = str(a) wird eine Instanz der Klasse str erzeugt.
Okay... und a, bzw. b sind dann jeweils eine Instanz?
Wäre dann anhand der Aufgabe:
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:41
von Mr. R341
Code: Alles auswählen
class ShoppingCart(object):
"""Creates shopping cart objects
for users of our fine website."""
def __init__(self, customer_name):
self.customer_name = customer_name
self.items_in_cart = {}
def add_item(self, product, price):
"""Add product to the cart."""
if not product in self.items_in_cart:
self.items_in_cart[product] = price
print product + " added."
else:
print product + " is already in the cart."
def remove_item(self, product):
"""Remove product from the cart."""
if product in self.items_in_cart:
del self.items_in_cart[product]
print product + " removed."
else:
print product + " is not in the cart."
Hier der Code der schon gegeben ist
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:44
von sparrow
Wenn du eine Instanz der Klasse "ShoppingCart" anlegen möchtest, die an den Namen "my_cart" gebunden ist und dessen Attribut "customer_name" den Wert "Book" hat, dann ja.
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:50
von Mr. R341
sparrow hat geschrieben: Donnerstag 15. Oktober 2020, 12:44
Wenn du eine Instanz der Klasse "ShoppingCart" anlegen möchtest, die an den Namen "my_cart" gebunden ist und dessen Attribut "customer_name" den Wert "Book" hat, dann ja.
Ahhh... jetzt verstehe ich es... das Attribut, dass direkt in ShoppingCart() steht ist der "customer_name" und das Attribut, dass in der methode ".add_item()" steht ist das "product" und der "price"?
Demnach müsste:
Code: Alles auswählen
my_cart = ShoppingCart("Peter")
my_cart.add_item("Book", 20)
richtig sein.. oder?
EDIT:
Was ich auch nicht gesehen hatte ist, dass "add_item" eine Funktion in der Klasse hat....
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:54
von sparrow
Das ist richtig.
add_item() ist eine Methode der Klasse.
Du solltest dich mit dem Konzept von Objektorientierter Programmierung und im speziellen mit dem entsprechenden
Kapitel im offiziellen Tutorial vertraut machen.
Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 12:57
von Mr. R341
"Einführung in Klassen" ist gerade das Thema im Kurs den ich mache

Daher Bin ich gerade dabei mich in die OOP einzuarbeiten ^^
Danke

Re: Klassen und instanzen
Verfasst: Donnerstag 15. Oktober 2020, 13:03
von Mr. R341
Und jetzt wirds (Kopftechnisch) schwer

Jetzt ist Inheritance zu deutsch "Erbung" aufgetaucht
Wünscht mir Glück und Durchhaltevermögen ^^
Thread kann geschlossen werden.