teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

アンダースコアが表示されていなかったので修正

2016/02/15 09:45

投稿

Miyako
Miyako

スコア142

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  Pythonではclassの初期化時に`__init__`が呼ばれます。
2
- なので、`test = TestClass('testName')`の時に__init__が呼ばれ、次に`self.__name = name`が実行されています。
2
+ なので、`test = TestClass('testName')`の時に`__init__`が呼ばれ、中の`self.__name = name`が実行されています。
3
3
  この時、`__setattr__`が呼ばれています。
4
4
 
5
5
  その後の`test.cube`では`__getattr__`が呼ばれているはずですが、`self.__class__(...`の部分で`self.__name`を読みだそうとして`__getattr__`が呼び出されて無限ループになっているようです。