Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

「クラス(class)の定義は必須ですか?」クラスの定義が必須ではない理由を教えます

f:id:kenken0326:20210317161836p:plain

こんにちはPyQサポートのfuriです。
今回は、「Pythonでプログラミングをする場合はクラスを定義すべきなのか」という質問に答えます。

質問

Javaなどはクラス定義が必須ですが、Pythonでプログラミングをする場合もクラスを定義したほうがよいのでしょうか?

回答

Pythonでは、必ずしもクラスを定義する必要はありません。その理由は以下でお伝えします。

クラスの定義は必ずしも必要なのか

Javaなどのオブジェクト指向言語を知っている方にPythonの研修を行うときに、「Pythonのクラスについて詳しく教えてほしい」と言われることがあります。

Javaなどはクラス定義が必須となっており、Pythonにもクラス機能があるため、同様のスタイルでプログラミングをしたいと思われるのでしょう。

しかし、Pythonは「手続き型」「オブジェクト指向」「関数型」など様々な書き方ができる言語なので、必ずしもクラスを定義する必要はありません。

処理の内容によってはクラスを定義するよりも、関数で実装したほうがシンプルで分かりやすい実装になることもありますし、その逆もあります。

また、クラスを定義をしてプログラミングするスタイルを好む人もいれば、別の書き方を好む人もあります。

このようにクラスを定義するかどうかは、実装したい処理の内容やプログラミングスタイルの好みによるので、Pythonのクラス機能はプログラミングをする手段の1つと考えるとよいでしょう。

しかし、クラスを定義しなければならないケースもあります。

クラスを定義しなければならないケース

クラスを定義しなければならないケースは「フレームワークを使っていて、そのフレームワークの制約でクラスを定義することが必須となっている場合」です。

たとえばWebフレームワークのDjangoではDBのテーブルを表すモデルを定義するとき、以下のようにDjangoが提供している Model クラスを継承することが必須となっています。

from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=200)
    price = models.IntegerField(default=0)

この例のようにクラス定義が必要となるケースもありますので、クラス定義は適材適所で利用しましょう。

Copyright ©2017- BeProud Inc. All rights reserved.