現在、VSCodeを使用してPythonのプログラムを記述しています。
これまでは特にデータ型の明記は意識して実施していなかったのですが、
VSCodeを利用するに当たってある程度の明記をするようにしました。
下記のような事例においてUndefined Variableとの警告が出るのですが、
何らか回避する方法などはありますか?
※要点のみ抜粋しております。
python
1class Master:2 def __init__ (self: Self) -> None:3 # do something4 5 def slave (self: Self, name: str) -> Slave:6 return Inst_Ch(self, name) # ↑ Undefined Variableの警告が表示される7 8class Slave: # ↓ ここに記載するため、Masterは先に定義しています9 def __init__ (self: Self, master: Master, name: str) -> None:10 # do something11 12 def read_data (self: Self) -> float:13 return self.master.read(self.name)14 15# 利用事例16master = Master()17slave = master.slave("ch1")18print(slave.read_data())
理屈的には単純にSlave
がMaster
の後に定義されているため、Master#slave
の場所では未定義になっているだけだとは思います。
定義の順序を逆にしたところで警告対象が変わるだけで、
現時点ではany
を指定してなあなあにしている状況です。
それで済ますのも悪くはないのですが、
- 実際に使う上で説明文が
any
となっていると分かりにくい - ここだけ
any
となってしまうのが気持ち悪い
などの観点から可能であれば解決したい次第です。
下記のようなパターンも検討はしたのですが、
実際に使う上でのコードが煩雑になったりするので、
前者のパターンでの実装で進めています。
python
1class Master:2 def __init__ (self: Self) -> None:3 # do something4 5class Slave:6 def __init__ (self: Self, name: str) -> None:7 # do something8 9 def read_data (self: Self, master: Master) -> float:10 return master.read(self.name)11 12# 利用事例13master = Master()14slave = Slave("ch1")15print(slave.read_data(master))
質問が初のため、不足している内容などありましたら申し訳ございません。
0 コメント