2016-12-20 44 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) 

當我嘗試實例化類,如:類不輸出參數/做任何事情? (Python)的

test= Fridge 

並且只要一予以實例化類如打開括號如下:

test = Fridge (

我看到傳遞給類構造函數/初始化方法的參數。 (即食物和數量)。

考慮到這一點,然後....我在一個小的損失,爲什麼我沒有收到任何輸出。也不是,我被要求輸入等

+2

請寫下您完整的代碼。如果您將實例定義爲'test = Fridge('spam',42)',那麼您如何嘗試打印數據。你認爲'如果input ==「milk」'做什麼?提示:你正在比較一個函數對象和一個字符串。 – Matthias

+0

你認爲你會被要求提供什麼意見?你在哪裏調用顯示方法以獲得輸出? –

+0

我寫我的全碼:\ – apronedsamurai

回答

1

你沒有得到任何輸入這種方式,你應該嘗試:

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) 

但在你的代碼的嚴重缺乏邏輯:

  • 爲什麼UserEntry從不使用?
  • 你如何使用冰箱?
  • 您userEntry方法永遠不會改變你的self.food變量。
+0

邏輯並沒有真正進入它tbh。這是第一次伊夫使用OOP,我教自己,我更關心的是獲得技術,理解OOP,術語,各部分如何叫他們等等等等 – apronedsamurai

+0

你必須構建你的代碼一步一步來。這裏有部分沒有用處。你想讓UserEntry做點什麼。爲什麼不首先測試一下,如果你可以在一個簡單的Python腳本中而不是在一個方法類中獲得來自用戶的輸入? – iFlo

+0

多數民衆贊成在刺激性的事情。我之前從用戶那裏得到了一個輸入,甚至做了參數檢查等!所以不知道爲什麼這次沒有成功:o – apronedsamurai

1

如果你正在做一個實例,您鍵入

test = Fridge(

然後它不告訴你「傳遞給類的構造函數/初始化方法的參數」,但它表明你你必須通過以創建實例

E.g.

test = Fridge("milk", 10) 

現在它擁有10個牛奶。嘗試

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

這給我帶來了另一個困惑。 實例和對象之間究竟有什麼區別? 我認爲它是一個實例=單數,對象=複數,但是,這告訴我,這是一個粗略的過度簡化,也很可能是錯誤的..... :( 哦,並且對象有方法而一個實例不...... ...... – apronedsamurai

+0

「對象」是一個非常通用的術語,但通常它的意思是或多或少與「實例」相同。類是冰箱的定義,並且可以使用該定義創建多個實例(冰箱)。 – RemcoGerlich

+0

每個實例都有自己的數據(實例a的self.food和self.quantity與實例b的self.quantity分開),但可以調用它們的方法只需調用類中定義的參數(但每個參數都有自己的「自我」參數)。 – RemcoGerlich