# typing --- 型ヒントのサポート | Python Doc https://docs.python.org/ja/3.12/library/typing.html※NamedTupleはあくまでtupleなので同じ値が同じ並びにあるもの同士は同じものと判断されるので丸ごとの比較には使用できないfrom typing import Final, NamedTuple, TypedDict INIT_PATH: Final[str] = "./users/" MAX_ROW: Final[int] = 100_000_000 PLACE_NAMES: Final[tuple[str, str]] = ('東京', '大阪') class TypedPerson(TypedDict): r"""aaa""" name: str # Finalは指定できない age: int no: int PERSON_001: Final[TypedPerson] = { 'name': "Yamada Taro", 'age': 20, 'no': 123 } class TypedBranch(NamedTuple): r"""aaa""" name: str place: str no: int BRANCH: TypedBranch = TypedBranch( "Akihabara", "東京", 100, ) print(f"{INIT_PATH=}") # ./users/ print(f"{MAX_ROW=}") # 100000000 print(f"{PLACE_NAMES=}") # 東京 大阪 print(f"{PERSON_001['name']=}") # Yamada Taro print(f"{BRANCH.name=}") # Akihabara # 型チェックでreportGeneralTypeIssuesになるが代入はできる INIT_PATH = "aaaa" MAX_ROW = 9_999 PLACE_NAMES = ('名古屋', '神戸') # 型チェックでreportGeneralTypeIssuesにならず代入ができる # TypedDictは型チェックにも引っかからないので定数としては使えない PERSON_001['name'] = "Sato Jiro" print(f"{INIT_PATH=}") # aaaa print(f"{MAX_ROW=:,}") # 9,999 print(f"{PLACE_NAMES=}") # 名古屋 神戸 print(f"{PERSON_001['name']=}") # Sato Jiro # 型チェックでreportGeneralTypeIssuesになり # 実行時にAttributeError: can't set attributeにもなり代入できない BRANCH.name = 'Ueno' print(f"{BRANCH.name=}")
[Python >= 3.8] 定数
ラベル:
Python,
Python 3.8