本来、引数の初期値にクラスの変数を使う人っていないんですかね??
pythonのプログラミングで分からなかったことがありましたので
メモします~
例えば、↓のようなプログラムがあるとします。
class HogeClass(): def __init__(self): self.use_value = 'test_value' def foo(self, text=self.use_value): # ←こんな感じで使いたい print(text) fuga = HogeClass() fuga.foo()
関数fooの引数の初期値にクラスの変数を入れられないかなぁと考えたんです~
でも、上の形で実行してもselfねーよって言われて怒られるんですよね~
Traceback (most recent call last): File "showlist.py", line 1, in <module> class HogeClass(): File "showlist.py", line 5, in HogeClass def foo(self, text=self.use_value): # ←こんな感じで使いたい NameError: name 'self' is not defined
そこで、社内の先輩エンジニアさんに質問してみたところ…
class HogeClass(object): USE_VALUE = 'test_value' def foo(self, text=USE_VALUE): print(text)
と教えてもらいました~ (教えていただき、ありがとうございます♪)
クラス変数として定義して、そのまま引数に入れる感じですね~
この状態で実行してみると…
test_value
おお~思った感じのものになりました~
これで、何とか初期値にクラスの変数を使えそうです~