Pythonでデータ型を明記した際のUndefined Variableを回避する方法はありますか?

現在、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())

理屈的には単純にSlaveMasterの後に定義されているため、
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 コメント