__init__()
Python 3では、以下のようにクラス属性を関数の引数として使用できることがわかりました。
ファイル test.py:
class Foo:
var1 = 23333
def __init__(self, var=var1):
self.var = var
コマンドで実行:
C:\Users\rikka\Desktop>py -3 -i test.py
>>> f1=Foo()
>>> f1.var
23333
しかし、dot.expression を使用すると、このクラスを初期化すると、インタープリターはエラーを報告します。
ファイルtest2.py:
class Foo:
var1 = 23333
def __init__(self, var=Foo.var1):
self.var = var
コマンドで実行:
C:\Users\rikka\Desktop>py -3 -i test2.py
Traceback (most recent call last):
File "test2.py", line 1, in <module>
class Foo:
File "test2.py", line 3, in Foo
def __init__(self, var=Foo.var1):
NameError: name 'Foo' is not defined
Foo は環境のグローバルフレームの名前であるため、インタープリターが名前 'Foo' を見つけられない理由がわかりません。私が完全に理解していないPythonクラスに関するスコープ関連の概念はありますか?