背景
使わなくても書けるが、PythonにはNamedTupleやTupleなど”型”に対するサポートが手厚くなっています(所謂、型ヒント)。
Pythonが初めてのプログラミング言語で、かつ中級者程度になってくると グローバル変数などを多用し、型を意識せずに、コーディングをしがちです。それにより、予期せぬ変数代入などを招く恐れがあります。
今回は、知ってるようで知らないPythonにおけるNamedTuple・Enumについて紹介します。
NamedTupleとはなにか?
意外と知られていない・使われていないのがNamedTupleです。
何が嬉しいのか?
- NamedTupleはTupleをより使いやすくしたものです
- tupleのように再代入できません
- 再代入リスクを避けつつ、明示的な記法によって開発しやすくなります
サンプルコード
from typing import NamedTuple # NamedTupleを使ってクラスを定義 class User(NamedTuple): name: str age : int sex : str user = User(name='John', age=20, sex='male') print(user.name) # 20 user.age = 30 # 再代入不可 # Tupleを使った場合 user = ('John', 20, 'male') print(user[1]) # 20, 再代入不可は実現できる。ただし,"1"のように呼び出しづらくなる
Enumとはなにか?
NamedTupleに似たような機能で、Enumがあります。
何が嬉しいのか?
サンプルコード
from enum import Enum class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 print(Color.RED.value) # valueを呼び出せる print(Color.RED.name) # nameを呼び出せる print(Color(1)) # valueからKeyを呼び出せる print(Color(1) == Color.RED) # 条件文を書ける Color.RED.value = 10 # 再代入は不可
まとめ
NamedTuple
もEnum
も再代入が不可という点は共通です。
これらの機能を知っていれば、
ということができるようになります。