10章クラス

本書で取り上げるユーザ定義型はクラスで最後になる。クラスについては多くの開発者が早い段階で学び、それが良い方にも悪い方にも作用する。クラスは多くのフレームワークやコードベースで使われるため、クラス設計に習熟することは十分意味がある。しかし、あまり早い段階でクラスについて学ぶとクラスをいつ使うのか、そしてもっと大切なことだがクラスをいつ使わないかというニュアンスを知らないままになる。

自分のクラスの使い方を思い返してみよう。そのデータはdataclassでも表現できないか。関数を使ったほうがよいのではないか。クラスを使うべきでないところも含めて何もかもクラスにして、そのせいで保守性を損なったコードベースが多すぎる。

しかし、対極に振れてクラスを全く使わないコードベースを見かけることもある。そのようなコードベースも保守性に問題がある。クラスを使わなければプログラムの前提条件を破るようなコードが簡単に書けて、そのために整合性が取れないデータを撒き散らすことになる。Pythonコードを書く際は極端に走らず、中庸が大切だ。コードベースにはクラスを使うべき場所がある。大切なのは、その長所と短所を把握することだ。ここでは、クラスを深く掘り下げ、先入観を打ち破りコードのロバストネスを向上させるためにクラスがどのように役立つかを学ぶ。

10.1 クラスの解剖

クラスは、関連性のあるデータを1つにまとめる方法の1つである。オブジェクト指向プログラミングのパラダイムで数十年の歴史を持ち、少し見ただけでは、データクラスについて学んだことと大差はないように感じる。実際、クラスはdataclassと同じようなコードで書ける。

class Person: name: str = "" years_experience: ...

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.