9章データクラス
データクラスは、関連するデータを1つにまとめられるユーザ定義型である。整数、文字列、列挙型などの多くのデータ型はスカラーであり、単一の値だけを表現する。リスト、集合、辞書などは、主に同種コレクションを表す。しかし、これらとは別に、単一のデータ型に複数のデータフィールドを組み込みたい場合がある。辞書やタプルなら可能だが、これらにはまだ問題がある。実行時に辞書やタプルに何が格納されているかわかりにくいことがあり、コードが読みにくくなるのだ。そのため、コードを読んだりレビューしたりする際に推論が難しくなることがある。これはロバストネスを大きく損ねる。
データがどういうものかがわかりにくいと、読み手は前提条件を読み誤り、バグの発見が難しくなる。データクラスはこれらよりも読みやすく理解しやすい。そして、型チェッカはデータクラスの自然な扱い方を知っている。
9.1 データクラスの実際
データクラスは単一の複合型にまとめられた変数の異種コレクションを表す。複合型は複数の値から構成され、何らかの関連性や論理的なまとまりを表していなければならない。たとえば、Fraction
(分数)は典型的な複合型である。Fraction
には、numerator
(分子)とdenominator
(分母)の2個のスカラー値が含まれる。
from fractions import Fraction Fraction(numerator=3, denominator=5)
このFraction
は、numerator
とdenominator
の間の関係を表す。numerator
とdenominator
は互いに独立しており、片方を変えたからといってもう片方も変わることはない。しかし、これらをデータ型に結合することで2つの値は組となって論理的な概念を生み出す。 ...
Get ロバストPython ―クリーンで保守しやすいコードを書く now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.