Python 3.5 から導入されたモジュールに typing があります。これは PEP 3107 — Function Annotations があんまりにも自由すぎるために作られたものだと思うのですが、例によって奇怪な実装です。
次の例はコメントにある動作をします、当たり前です。
from typing import List
Vector = List[float] # List.__getitem__(float)
ですがこれを
def broadcast_message(message: str, servers: List[Server]) -> None:
pass
とか書くのはどうなんでしょうか。正直かなり混乱しました。
def broadcast_message(message: str, servers: List(Server)) -> None:
pass
ではいけないのでしょうか。Python 3.5 以前の dict は順序を保存できないのでその為かと思ったのですが、見当たる限りでは typing.NamedTuple しか影響しそうにありません。
C# のような何となくそれっぽい記述にはなるものの、Pythonic とは到底思えなかったり、可読性の高い名前付き引数が使用できないなどデメリットの方が目立つ気がします。