13:dataclassを使う

クラス化したときの問題は、引数の多いクラスを定義するのが面倒な点です。 こういった場合はどのように実装するのが良いでしょうか。

具体的な失敗

class User:
    def __init__(self, username, email, last_name, first_name, birthday, bio, role, mail_confirmed=False):
        self.username = username
        self.email = email
        self.last_name = last_name
        self.first_name = first_name
        self.birthday = birthday
        self.bio = bio
        self.mail_confirmed = mail_confirmed

このプログラムが「問題」というわけではありませんが、冗長な印象があります。

ベストプラクティス

Python3.7から使える dataclass を使いましょう。

from dataclasses import dataclass
from datetime import date


@dataclass
class User:
    username: str
    email: str
    last_name: str
    first_name: str
    birthday: date
    role: str
    mail_confirmed: bool = False

__init__ メソッドの引数が多いクラスはdataclassを使うと良いでしょう。 各引数の型と デフォルト引数 を可読性高く設定できます。

cover

(中略)詳細は書籍 自走プログラマー をご参照ください