回答編集履歴
2
重要な注意点を追記
test
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
根本的な問題として、maxDepthが関数かメソッドなのかは置いておいて、値を返すだけでなく引数の属性を変更あるいは追加しているということに注意が必要です。
|
2
|
+
|
3
|
+
勝手にself.max_depthをmax_depthに変更すると、戻り値が返ったとしても、引数の属性(self.max_depth)は想定通りの値が入っていません。呼び出し側が後でself.max_depthを使おうとしてもそれが使えませんので、全体として正しく動く保証がなくなります。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
とりあえず、上記のことが絶対に起こらないという前提で考えてみます。
|
8
|
+
|
9
|
+
|
10
|
+
|
1
11
|
これはメソッドの話なのかメソッドの話ではないのかはっきりしていませんが、いずれにしてもインスタンス変数かどうかとは関係ない話です。
|
2
12
|
|
3
13
|
|
1
用語の間違いを修正&参照リンクを追加
test
CHANGED
@@ -96,9 +96,13 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
2行目のmax_depthは関数maxDepthの
|
99
|
+
2行目のmax_depthは関数maxDepthの変数となります。ここで定義をしているのでローカル変数と解釈されます。
|
100
100
|
|
101
|
-
関数helper内のmax_depthは
|
101
|
+
関数helper内のmax_depthは変数となり、ここで定義をしているのでローカル変数と解釈されます。すると右辺で参照しているので未定義の変数を使おうとしていることになってエラーとなります。
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
詳しくは、[4.2. 名前づけと束縛 (naming and binding)](https://docs.python.org/ja/3/reference/executionmodel.html#naming-and-binding)をお読みください。
|
102
106
|
|
103
107
|
|
104
108
|
|