以下のclassについて質問します。
目標は、横✕高さ✕奥行きにて体積を求め、単位のcmを付けることです。
以下、Classを作成した後、インスタンスを変数に入れ、cm付きの体積をアウトプットするメソッドunit_content()を呼び出すと、「dが定義されていません」というエラーメッセージが出てしまいます。
python
1class Prism: 2 def __init__(self,width,height,depth,unit='cm'): 3 self.width = width 4 self.height = height 5 self.depth = depth 6 self.unit = unit 7 8 def content(self): 9 d = self.width*self.height*self.depth 10 11 def unit_content(self): 12 return d+self.unit 13 14#6000cmという値が出力されることを期待 15prism=Prism(10,20,30) 16prism.unit_content() 17 18#NameError: name 'd' is not defined
◎やったこと
そもそも、__init__メソッドの引数4つに対して、インスタンスを作成するときの引数が3つになっています。なので、以下のClass を試してみました。
python
1class Prism: 2 def __init__(self,width,height,depth,number): 3 self.width = width 4 self.height = height 5 self.depth = depth 6 self.number = number 7 8 def content(self): 9 d = self.width*self.height*self.depth 10 11 def unit_content(self): 12 return d+self.number 13 14#6003という値が出力されることを期待 15prism=Prism(10,20,30,3) 16prism.contentPlusNumber() 17 18#NameError: name 'd' is not defined 19
ちなみに、以下のようなclassを書くとエラーなしで表示されるので、インスタンス変数の積を変数に代入する、d = self.widthself.heightself.depthという記述には問題がないようです。
python
1class Prism: 2 def __init__(self,width,height,depth): 3 self.width = width 4 self.height = height 5 self.depth = depth 6 7 def content(self): 8 d = self.width*self.height*self.depth 9 return d 10 11prism=Prism(10,20,30) 12prism.content() 13 14#6000
> unit_content()を呼び出すと、「dが定義されていません」というエラーメッセージが出てしまいます。
どうしたいのですか?(動作だけでなく、どのようなコードにしたいのかも明記してください)

回答3件
あなたの回答
tips
プレビュー