2013-02-21 3 views
0

좋아요. 그래서 저는 파이썬에 매우 익숙합니다. 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() 

지금 내 질문은 이것이다, 난 내가 수 있도록 (분기 = 5, 페니 = 100)가에 추가 할 수있는 매개 변수를 전달 얼마나 제대로 setitem를 사용하고 있지 않다 알고 사전 객체 키와 값을 모두 전달해야합니다. (쿼터는 키이고 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을 사용하지 않을 것입니다 (제가 볼 수있는 한). –

답변

0

그냥 인수 모든 키워드를 만든 경우가 더 간단 할 것이다 기반으로

** 편집 코드입니다. 그들이 제공되지 않습니다 경우에 당신은, 기본에 개별 동전 수량을 설정할 수 있습니다 : 당신은 아마 또한 허용 동전 이외의 키워드가 주어지지 있는지 확인해야합니다

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

.

+0

그 트릭을 했어 !! 나는 전에 kwargs를 보지 못했다. 그것은 정확히 내가 찾고 있었던 것이다. 나중에 여기에 오는 사람들은 내 수업 코드가 있습니다. – kingweaver88

+0

실제로 수정 된 코드의 맨 위에있는 원래 게시물에 넣어야합니다. – kingweaver88

관련 문제