WebエンジニアのLoL日記

LoLをプレイしたりLJLの試合を見たりするのが好きなエンジニア。LoLのイベントやパッチノートなど気になった点を記事にしたり、LJLについの記事をかいたりしています。某社でWeb系のエンジニアとして働いているので、技術系の記事もたまに書きます。コンタクトを取りたい場合はtwitterまで。

Pythonの型ヒントチートシート

f:id:yoshiki_utakata:20181208115631j:plain

Python3から追加された型ヒントについて、よく使う書き方をまとめます。必要があれば随時追記していきます。

Typing, Type annotation, Type hinting, Type hint, 型アノテーション, 型ヒント, タイプアノテーション, タイプヒント etc... どれが正式名称なんだってわからなくなることがありますが、正式名称は「型ヒント」です。英語はType hint。typingは型ヒントのためのモジュールのこと

基本的な型ヒントの書き方

関数の引数と返り値を型ヒントする場合は以下のように書きます。

def greeting(name: str) -> str:
    # implements here

よく使う基本的な型

  • str
  • int
  • float
  • bool
  • None

Dict, Tuple, List

from typing import Dict, Tuple, List

Dict[str, int]
Tuple[str, int]
List[str]

intまたはstrを返す、みたいな場合

from typing import Union

def dosomething() -> Union[str, int]:
    # returns int or str

Optional型

Union[A, None] と同じ意味になります。

from typing import Optional

def convert_to_int(value: string) -> Optonal[int]:
    # returns int or None

クラスも型ヒント可能

class Vector():
    # implements

def dosomething(value: int) -> Vector:
    # return Vector object

自分自身のオブジェクトを引数に取る場合など

よくあるかと思います。以下の場合普通に -> UserModel と型ヒントすると、まだclassの定義が完了していないので、class not found となってしまいます。

class UserModel():

    @classmethod
    def get_user_from_session() -> 'UserModel':
        # returns UserModel object

参考

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで