0

わかりましたので、私は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'])

OK、これはクラスを使用するためのテストです。後でもっと多くのことを行う必要がありますが、今のところは基本が機能していることを確認したいだけです

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

私の質問はこれです。setitemを正しく使用していないことはわかっていますが、パラメーター (四半期 = 5、ペニー = 100) をどのように渡して、辞書オブジェクトに追加できるようにしますか。キーと値の両方を渡す必要があります (4 分の 1 がキーで、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)
4

1 に答える 1

0

引数をすべてキーワードにした方が簡単です。次に、個々のコインの数量が指定されていない場合は、デフォルトに設定できます。

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

また、許容されるコイン以外のキーワードが指定されていないことも確認する必要があります。

于 2013-02-21T21:01:59.840 に答える