前提・実現したいこと
本プログラム側とモジュール側のメソッドがお互いのメソッドを呼び合う
といったプログラムを作成中に不可解なエラーに遭遇しました
本プログラムとモジュールがあり、お互いがお互いをインポートした状態で
本プログラム側からモジュールのメソッド、(仮の呼び名として2_1)を呼び出す→呼び出されたモジュールのメソッド(2_1)が本プログラム側のメソッド(仮の呼び名として1_1)を呼び出す→本プログラム側のメソッド(1_1)がモジュールのメソッド(2_2)を呼び出すとAttributeErrorになる
といった現象が起きました
該当のソースコード
分かりやすいようにサンプルプログラムを作ってみました
本プログラム側 プログラム名:test1
Python3
1import test2 as t2 2class App001(object): 3 def test1_1(self): 4 self.Test2=t2.App002() 5 self.Test2.test2_0() 6 self.Test2.test2_1() 7 8 def test1_2(self,text001): 9 print(text001) 10 self.Test2.test2_2() 11 12if __name__ == '__main__': 13 App=App001() 14 App.test1_1() 15
モジュール側 プログラム名:test2
python3
1import test1 as t1 2class App002(object): 3 def __init__(self): 4 self.text001="TextA" 5 self.text002="TextB" 6 7 def test2_0(self): 8 print("Text from module") 9 10 def test2_1(self): 11 self.Test1=t1.App001() 12 self.Test1.test1_2(self.text001) 13 14 def test2_2(self): 15 print(self.text002) 16 17if __name__ == '__main__': 18 App=App002() 19 App.test2_1() 20 21
発生している問題・エラーメッセージ
エラーメッセージ
self.Test2.test2_2() AttributeError: 'App001' object has no attribute 'Test2'
試したこと
お互いがお互いをインポートしているので、相手側のメソッドは何の問題もなく呼び出せれるはずなのですが、プログラムがAttributeErrorエラーを起こすのはやっぱりメソッドを直接何度も生き行きしているからなのでしょうか?
この問題を解決するにはどうすればいいでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/13 22:09
2018/12/13 22:23 編集
2018/12/13 22:24
2018/12/13 22:34
2018/12/13 22:35
2018/12/13 22:42
2018/12/13 23:48
2018/12/14 05:12
2018/12/14 05:14
2018/12/14 05:19