2016-12-20 5 views
-1
class Fridge: 
    def __init__ (self, food, quantity): 
     self.food=food 
     self.quantity=quantity 
    def UserEntry(self): 
     if input=="milk": 
      print("you got milk!") 
     else: 
      print ("What do you want?") 
    def DisplayFridge(self): 
     print("Fridge_item#1 :" , self.food, "Quantity:" , self.quantity) 

Wenn ich versuche, um die Klasse zu instanziieren, wie zum Beispiel:Klasse gibt keine Argumente/nichts aus? (Python)

test= Fridge 

und sobald ein ich die Klammer öffnen, um die Klasse wie folgt zu instanziiert:

test = Fridge (

Ich bin mit den Argumenten vorgestellt, die an die Klassenkonstruktor/Initialisierungsmethode übergeben wurden. (d. h. Essen und Menge).

, die mit im Auge dann .... Ich bin ein wenig ratlos an, warum ich keine Ausgabe zu bekommen. noch bin ich werde zur Eingabe aufgefordert, usw.

+2

Bitte schreiben Sie Ihren vollständigen Code. Wenn Sie die Instanz wie 'test = Fridge ('spam', 42)' definieren, wie versuchen Sie, die Daten zu drucken. Und was denkst du, wenn Input == "Milch" tut? Tipp: Sie vergleichen hier ein Funktionsobjekt mit einem String. – Matthias

+0

Wo denken Sie, dass Sie um eine Eingabe gebeten werden? Wo rufst du die Anzeigemethode an, damit du eine Ausgabe erhältst? –

+0

Ich habe meinen ganzen Code geschrieben: \ – apronedsamurai

Antwort

1

Sie sind keine Eingaben auf diese Weise erhalten, sollten Sie versuchen:

class Fridge: 
    def __init__ (self, food, quantity): 
     self.food=food 
     self.quantity=quantity 
    def UserEntry(self): 
     var = raw_input("Please enter something: ") 
     if var=="milk": 
      print("you got milk!") 
     else: 
      print ("What do you want?") 
    def DisplayFridge(self): 
     print("Fridge_item#1 :" , self.food, "Quantity:" , self.quantity) 

Aber es ist gravierender Mangel an Logik in Ihrem Code:

  • Warum UserEntry nie benutzt wird?
  • Wie verwenden Sie Kühlschrank?
  • Sie Userentry Methode wird nie Ihre self.food Variable ändern.
+0

Logic kam nicht wirklich dazu tbh. Dies ist das erste Mal, Ive OOP verwendet, lehre ich mich, und ich war mehr besorgt über die Technik bekommen, das Verständnis der verschiedenen Teile der OOP, Terminologie, wie sie nennen etc etc – apronedsamurai

+0

Sie müssen den Code Schritt für Schritt aufzubauen. Hier gibt es Teile ohne jede Verwendung. Sie möchten, dass UserEntry etwas unternimmt. Warum nicht zuerst testen, ob Sie eine Eingabe vom Benutzer in einem einfachen Python-Skript und nicht in einer Methodenklasse erhalten können? – iFlo

+0

Das ist die irritierende Sache. Ich hatte zuvor eine Eingabe von einem Benutzer erhalten, und sogar Parameterüberprüfung etc! Also weiß nicht, warum es diesmal nicht geklappt hat: o – apronedsamurai

1

Wenn Sie eine Instanz machst, geben Sie

test = Fridge(

Und dann ist es nicht „die Argumente, die der Klasse Konstruktor/Initialisierung Methode übergeben wurden“ zeigen, aber es zeigt Ihnen, was Sie durchlaufen müssen, um eine Instanz zu erstellen.

z.

test = Fridge("milk", 10) 

Und jetzt hält es 10 Milchen. Versuchen Sie

test.UserEntry() 
test.DisplayFridge() 
+0

Das wirft einen weiteren Punkt der Verwirrung für mich auf. Was genau ist der Unterschied zwischen einer Instanz und einem Objekt? Ich dachte darüber nach, eine Instanz = Singular, Objekt = Plural aber etwas, das mir sagt, dass eine grobe Über-Vereinfachung ist auch wahrscheinlich falsch ... :( Oh, und Objekte haben Methoden während eine Instanz nicht ......? – apronedsamurai

+0

"Objekt" ist ein sehr allgemeiner Begriff, aber normalerweise ist es mehr oder weniger das gleiche wie "Instanz". Eine Klasse ist die Definition dessen, was ein Kühlschrank ist, und Sie können viele Instanzen (Kühlschränke) unter Verwendung dieser Definition machen – RemcoGerlich

+0

Jede Instanz hat ihre eigenen Daten (die self.food und self.quantity von Instanz a ist getrennt von denen der Instanz b), aber Sie können Methoden für sie und sie aufrufen rufen Sie einfach die für die Klasse definierten auf (aber jeder erhält seinen eigenen "self" -Parameter). – RemcoGerlich

Verwandte Themen