###前提・実現したいこと
Pythonの理解を深める為にjavaのコードを
Pythonに書き換えております。
javaでは下記の関数はprivate関数でしたので
__digestFood(foodType)にしても上手く動作しません。
クラスで試してもインスタンスで試しても関数をpublicにしても
動きません。
どうしたら改善しますでしょうか?
###発生している問題・エラーメッセージ
Traceback (most recent call last): File "パス/human.py", line 88, in <module> Human.eatFood("self","魔法の水") File "パス/human.py", line 72, in eatFood __digestFood(foodType) NameError: name '_Human__digestFood' is not defined
また__digestFood関数をpublicにして直接実行すると
self.vitality += 10と
self.magic += 10
の2行が引っかかって
TypeError: must be str, not int
と文字列にしろとエラーが出力されます。
Pythonは数値を文字列にその都度文字列に直さないといけないのでしょうか?
そのまま数値で通すことはできないのでしょうか?
###該当のソースコード
python
1#/usr/bin/python3 2def s(w): 3 return str(w) 4 5class Human: 6 # 基本のステータスを宣言 7 name = "" 8 gender = "" 9 length = "" 10 weight = "" 11 vitality = "" 12 magic = "" 13 14 # コンストラクタ 15 # def __init__(self): 16 17 #getter,setter 名前-------------------------------------- 18 def getName(self): 19 return self.name 20 def setName(self, name): 21 self.name = "彼の名前は" + name + "です。" 22 23 # getter,setter 性別-------------------------------------- 24 def getGender(self): 25 return self.gender 26 def setGender(self,gender): 27 self.gender = gender 28 29 30 # getter,setter 身長-------------------------------------- 31 def getLength(self): 32 return self.length 33 def setLength(self,length): 34 self.length = length 35 36 37 # getter,setter 体重-------------------------------------- 38 def getWeight(self): 39 return self.weight 40 def setWeight(self,weight): 41 self.weight = weight 42 43 44 # getter,setter 体力-------------------------------------- 45 def getvitality(self): 46 return self.vitality 47 def setvitality(self,vitality): 48 self.vitality = vitality 49 50 # getter,setter 魔力-------------------------------------- 51 def getMagic(self): 52 return self.magic 53 def setMagic(self,magic): 54 self.magic = magic 55 print(type(magic)) 56 57 # 話す-------------------------------------- 58 def talk(self,about): 59 print(about) 60 61 # 食べる-------------------------------------- 62 def eatFood(self,food): 63 foodType = 0 64 if food == "薬草": 65 foodType = 1 66 elif food == "魔法の水": 67 foodType = 2 68 else: 69 foodType = 3 70 # 確認用 71 print(foodType) 72 __digestFood(foodType) 73 # 74 # # 消化する-------------------------------------- 75 def __digestFood(self,foodType): 76 if foodType == 1: 77 self.vitality += 10 78 print("HPが10回復した") 79 elif foodType == 2: 80 print("MPが10回復した") 81 self.magic += 10 82 else: 83 print("お腹を壊してしまった") 84 self.vitality -= 1 85 86 87Hero =Human() 88Hero.eatFood("エリクサ") 89Human.eatFood("hoge","魔法の水") 90
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
Python3.6
Mac OSX 10.12.6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。