Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
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.
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...
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?
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."
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.
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"?
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.