前提・実現したいこと
Pythonでクラスの勉強をしていて、理由が分からず詰まってしまいました。
Testクラスをインスタンス化して、output()
を実行すると以下の結果が返ってくることを実現したいです。
Python
1>>> Osadaは24歳です。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "***/test.py", line 25, in <module> test.output() File "c***/test.py", line 20, in output get_name() NameError: name 'get_name' is not defined
該当のソースコード
Python
1import datetime as dt 2 3class Test(): 4 def __init__(self, name, born_year): 5 self.name = name 6 self.born_year = born_year 7 self.age = 0 8 9 def get_name(self): 10 self.name = self.name + 'さん' 11 12 def get_age(self): 13 current_year = dt.date.today().year 14 self.age = current_year - self.born_year 15 16 def do_introdution(self): 17 print("{}は{}才です。".format(self.name, self.age)) 18 19 def output(self): 20 get_name() 21 get_age() 22 do_introdution() 23 24test = Test('Osada', 1997) 25test.output()
試したこと
main()を用いたパターンもできるようになりたくtryしてみましたが同様のエラーになってしまいました。
Python
1import datetime as dt 2 3class Test(): 4 def __init__(self, name, born_year): 5 self.name = name 6 self.born_year = born_year 7 self.age = 0 8 9 def main(): 10 get_name() 11 get_age() 12 do_introdution() 13 14 def get_name(self): 15 self.name = self.name + 'さん' 16 17 def get_age(self): 18 current_year = dt.date.today().year 19 self.age = current_year - self.born_year 20 21 def do_introdution(self): 22 print("{}は{}才です。".format(self.name, self.age)) 23 24 if __name__ == '__main__': 25 main() 26 27test = Test('Osada', 1997) 28test.main() 29 30>>> Traceback (most recent call last): 31 File "***/test.py", line 3, in <module> 32 class Test(): 33 File "***/test.py", line 25, in Test 34 main() 35 File "***/test.py", line 10, in main 36 get_name() 37NameError: name 'get_name' is not defined 38
補足情報(FW/ツールのバージョンなど)
python 3.7.9
windows10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/14 14:17
2021/07/14 18:07
2021/07/17 09:33
2021/07/17 10:10