2017-05-14 7 views
0

私は、カロリー、ナトリウム、カリウム、炭水化物、繊維、砂糖、タンパク質、VA、VC、と鉄。それから私は英語のキュウリ、カニの棒、海草、玄米など、このクラスで食べ物を作ることができます。私はユーザー定義の関数か、それらを組み合わせてカリフォルニアロールと呼ばれる新しい食品を作成することを可能にする食品クラスのメソッドを持ち、この新しい食品のすべての属性を計算します。pythonでは、どのようにパラメータをオブジェクトとして渡し、変数ではなく組み合わせることができますか?

class Food: 
def __init__(self, name, cal, fat, sod, pot, carbs, fiber, sugar, protein, va, vc, calcium, iron, unit): 
    self.name = name 
    self.cal = cal 
    self.fat = fat 
    self.sod = sod 
    self.pot = pot 
    self.carbs = carbs 
    self.fiber = fiber 
    self.sugar = sugar 
    self.protein = protein 
    self.va = va 
    self.vc = vc 
    self.calcium = calcium 
    self.iron = iron 

englishcucumber = Food('English Cucumber', 15, 0, 2, 147, 2, 0.5, 1.7, 0.7, 2, 5, 2, 2,1) 
brownrice = Food("Brown Rice", 1440, 12, 80, 0, 312, 16, 8, 32, 0, 0, 0, 10, 4) 
crabstick = Food("Crab Stick", 33, 0, 116.7, 0, 4.7, 1.3, 0, 4, 0, 0.33, 0.33, 0, 2) 
seawead = Food("Sea Wead", 10, 0, 0, 0, 1, 1, 0, 1, 6, 4, 0, 3, 1) 

私はすでにオブジェクトを定義していますが、それらのオブジェクトをどのように組み合わせることができますか?入力変数が通常の変数だけでなくオブジェクトである関数を定義する方法はありますか?

+0

あなたは、あなたの質問のタイトルを修正していただけますか? –

答えて

0

はこれを試してみてください:あなたがタイトルを求めているものは明らかであるように

class Food: 
    def __init__(self, name, cal, fat, sod, pot, carbs, fiber, sugar, protein, va, vc, calcium, iron, unit): 
     self.name = name 
     self.cal = cal 
     self.fat = fat 
     self.sod = sod 
     self.pot = pot 
     self.carbs = carbs 
     self.fiber = fiber 
     self.sugar = sugar 
     self.protein = protein 
     self.va = va 
     self.vc = vc 
     self.calcium = calcium 
     self.iron = iron 

    def combine(self, name, other): 
     """Given a name and another class instance of food, return a food instance with all of the values combined.""" 
     r = Food(name, cal=self.cal+other.cal, fat=self.fat+other.fat, sod=self.sod+other.sod, pot=self.pot+other.pot, carbs=self.carbs+other.carbs, fiber=self.fiber+other.fiber, sugar=self.sugar+other.sugar, protein=self.protein+other.protein, va=self.va+other.va, vc=self.vc+other.vc, calcium=self.calcium+other.calcium, iron=self.iron+other.iron, unit=self.unit+other.unit) 
     return r 
+0

あなたが知っているだけで、あなたが使用していない、保存していないユニット引数があるので、 '' 'self.unit = unit''を追加しないとバグが発生します。キーワードを使用してコードをより明確にすることもできます。数字だけを表示するのではなく、 '' 'f = Food(name =" chocolate "、sugar = 100、protein = 0 ...)' ''のようにしてみてください。 – oliver2213

関連する問題