- 締切済み
python
game.py class janken: def rsp(): import random count = 0 i = 0 hands = [] bk_hands=["ぐー","ちょき","ぱー"] f = open("rsp.txt","w") f.write("ぐー\nちょき\nぱー")・・・ mein.py mport game #各機能のクラスのインスタンスを作成する j = game() #無限ループで対話をしていく #ユーザーが終了コマンドを入力するまで繰り返す while True: #機能呼び出しのコマンドを表示する #じゃんけんの他にも機能があれば、2,3と増やしていくべし print('何をしますか?') print('1: じゃんけんする') print('9: 終了する') #入力されたコマンドに応じて機能を呼び出す act = int(input('整数で番号を入力:')) #1が入力されたらじゃんけんのメソッドを呼び出す if act == 1: j.rsp()・・・ この場合にmein.py", line 4, in <module> j = game() TypeError: 'module' object is not callable と出るのですが、なぜ呼び出してくれないのでしょうか
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- asciiz
- ベストアンサー率70% (6803/9674)
「mport game」は「import game」の記述ミスかと思いますが、それを正したとしても、そもそも game.py の中に game() 関数の記述「def game () : ~」がありません。 存在しない関数を呼ぼうとしていますから、「そんな関数(呼び出し可能オブジェクト)は知らん」と言われてしまっているわけです。 まずは、importを使わず、1ファイルの中に関数定義と、それを呼び出して使うメインプログラムを書いてみましょう。(importなし) それが完成したうえで、game() 関数に関する部分をそっくり別ファイルにコピペし、ファイル名を付け、メインからimport すれば、1ファイルの中で記述している野と同様に使えます。 その時、コピペして切り出したファイルは、「game.py」でも「sub1.py」でも構いません。定義されている関数名とファイル名は連動する必要は無いんです。 「sub1.py」として切り出した場合は「import sub1」として組み込めば、game()関数が使えるようになるわけです。 そういうわけで、「game.py」の中に game()の記述が無ければ、いくら「import game」をやったところで、game()関数を使えるようになりません。 ご質問の状況は、そういうことだと思います。 P.S. ところでメインルーチンの英語綴りは「main routine」ですよ。