2013-02-21 25 views
0

好吧,所以我對python非常陌生,我在SF的社區中心爲它做了一個免費的課程,所以這是「家庭作業」,但它不適用於請明確說明學校。python如何將多個參數傳遞給類而不需要它們

好的,所以我們在運算符重載,但我有一個問題涉及到一個類的參數,讓我難住。我可能完全偏離思路,所以任何幫助都會很大。

這裏是我的類代碼到目前爲止

class CoinPurse(object): 

    def __init__(self, quarters=0, dimes=0, nickels=0, pennies=0): 
     self.purse ={'quarters': 0, 'dimes': 0, 'nickels': 0, 'pennies': 0} 

    def __setitem__(self, quarters, dimes, nickels, pennies): 
     self.purse ={'quarters': quarters, 'dimes': dimes, 'nickels': nickels, 'pennies': pennies} 

    def amount(self): 
     """ Return the amount of money as a floating point value """ 
     self.purseamount = 0 
     self.purseamount = self.purseamount + ((self.purse['quarters']) * 25) 
     self.purseamount = self.purseamount + ((self.purse['dimes']) * 10) 
     self.purseamount = self.purseamount + ((self.purse['nickels']) * 5) 
     self.purseamount = self.purseamount + self.purse['pennies'] 
     self.purseamount = float(self.purseamount)/100 

     return float(self.purseamount) 

    def quarters(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.purse['quarters']) 

    def dimes(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.purse['dimes']) 

    def nickels(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.purse['nickels']) 

    def pennies(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.purse['pennies']) 

確定,這裏是使用類的測試,後來我做了很多與它但現在我只想讓確保基礎結構正常工作

x = CoinPurse(quarters=5, pennies=100) 
print x.amount() 
print x.quarters() 
print x.pennies() 

現在我的問題是這樣的,我知道我沒有使用setitem正確我將如何傳遞(宿舍= 5,便士= 100),以便它們可以被添加到參數字典對象。我需要通過密鑰和價值(季度是關鍵,5是價值)......我迷失在此,不能繼續下去,直到我明白了。

btw我不能改變x = CoinPurse(宿舍= 5,便士= 100)必須這樣使用。

**編輯的代碼基礎上的建議

class CoinPurse(object): 

    def __init__(self, **kwargs): 
     self.pquarters = kwargs.get('quarters', 0) 
     self.pdimes = kwargs.get('dimes', 0) 
     self.pnickels = kwargs.get('nickels', 0) 
     self.ppennies = kwargs.get('pennies', 0) 


    def amount(self): 
     """ Return the amount of money as a floating point value """ 
     self.purseamount = 0 
     self.purseamount = self.purseamount + (self.pquarters * 25) 
     self.purseamount = self.purseamount + (self.pdimes * 10) 
     self.purseamount = self.purseamount + (self.pnickels * 5) 
     self.purseamount = self.purseamount + self.ppennies 
     self.purseamount = float(self.purseamount)/100 

     return float(self.purseamount) 

    def quarters(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.pquarters) 

    def dimes(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.pdimes) 

    def nickels(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.pnickels) 

    def pennies(self): 
     """ Returns the number of quarters as an integer """ 

     return int(self.ppennies) 
+2

tbh codereview.stackexchange.com可能會更好,因爲可以改進代碼的很多部分。你不會真的使用setitem(據我所知)。 – 2013-02-21 20:58:10

回答

0

這將是簡單的,如果你剛纔提出的論據的所有關鍵字。然後,您可以設置單獨的硬幣數量爲默認,如果不給他們:

def __init__(self, **kwargs): 
    quarters = kwargs.get('quarters', 0) 
    # etc. for other coins 

你或許應該也驗證不超過允許的硬幣其他關鍵字中給出。

+0

這個伎倆!我之前沒有見過kwargs,那正是我所期待的。對於那些稍後出現的是我的班級代碼。 – kingweaver88 2013-02-21 21:23:47

+0

實際上,我將不得不把它放在原來的文章中,檢查修改後的代碼的頂部。 – kingweaver88 2013-02-21 21:27:19

相關問題