3.7 のリリースでtypeが改善されているらしいと読んだので、ドキュメンを確認していたのですが。 自分で新しいtypeを作るときどうしたらいいのですか。
他の言語ですが、elmだたこのようなものがあります。
Elm Union types
Elm
1 2type Answer = Yes | No
やりたいのは TOP か ALL を受け取り、200だった場合はListを返す関数の場合のtypeを自分で定義することです。
python
1 2TOP = NewType('TOP', str) 3ALL = NewType('ALL', str) 4Depth = Union[TOP, ALL] 5 6Contract = NewType('Contract', str) 7Contracts = Union[List[Contract], None] 8 9def get_list_contracts(depth: Depth) -> Contracts: 10 """ Contract API Resources depth is TOP or ALL""" 11 r = s.get(urljoin(BASEURL, 12 f'/contract-api/v1/contracts/identifiers?depth={depth}')) 13 return r.json() if 200 == r.status_code else None 14 .....
"やりたいのは Yes か No を受け取り、200だった場合はListを返す関数の場合" と ソースに関連がないんですが、やりたいことのイメージはソースの方ですか?
ご指摘有難うございます。 コード自体は正しく動いているコードで それにtypeを追加していきたいというのが希望です、ここの関数は短く、受け取っているのが2つにきまっているのですがboolではないので、その場合はどう書くのか 質問です
このコードは「こんな感じのことができたらいい(けどまだ変な)」コードのイメージ」ですか? 「今こう書いてみている(けどまだ変な)コード」ですか?
このコードはtypeなし版は正しく動いています。 これにtype をつけるならどうすればいいのですか? 引き数の可能性は2つしかないのですが、その場合typeはそうするのですか? boolは根拠もなく、違和感があるのです、bool が良いんですか?
自分で書いてみたんですけど、他の人が読むと変ですか?
type に価値を感じるのですが、どうか書いたらいいのかよく分かっていません。
動いているコードはまったくtypeヒントがついてない(つまりこのコードからtypeヒントを全部取っ払った)状態なんでしょうか。元は、strを引数にとって、strのリストかNoneを返す、という関数なんですね。
はい それが現状です。それでも動いているんですけど、渡すのはDepthのうちどちらか、返しているのは str のリストじゃなくて 意味のわかる Contracts にして可読性をあげられればと思っています

回答3件
あなたの回答
tips
プレビュー