[英]python how to pass multiple parameters to class without making them required
好的,所以我对python还是很陌生,我正在SF的社区中心免费上课,所以是的,这是“作业”,但它不是上学的,所以请明确。
好的,我们正在进行运算符重载,但是我有一个问题与类中的参数有关。 我的想法可能完全偏离了轨道,因此任何帮助都将非常有用。
这是我到目前为止的课程代码
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 ,我将如何传递参数(quarters = 5,pennys = 100),以便将其添加到字典对象中。 我需要同时传递键和值(四分之一是键,5是值)...我对此一无所知,无法继续下去,直到我弄清楚了。
顺便说一句,我不能更改必须以这种方式使用的x = CoinPurse(quarters = 5,pennies = 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)
如果仅将参数设为所有关键字,则会更简单。 然后,您可以将未设置的单个硬币数量设置为默认值:
def __init__(self, **kwargs):
quarters = kwargs.get('quarters', 0)
# etc. for other coins
您可能还应该验证,除了允许的硬币以外,没有给出任何其他关键字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.