Pythonでデータクラスを使う(dataclasses.dataclass, Python 3.7以降)
この記事では、Python 3.7以降で導入された`dataclasses`モジュールを使用してデータクラスを作成する方法を説明します。データクラスを使うことで、クラスの記述を簡潔にし、コードの可読性を向上させることができます。
目次
データクラスの基本
最もシンプルなデータクラスは、`@dataclass`デコレータをクラス定義の前に付けるだけです。
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
このコードは、`name`と`age`という2つのフィールドを持つ`Person`クラスを定義します。`dataclass`デコレータによって、`__init__`メソッド、`__repr__`メソッドなどが自動的に生成されます。
フィールドの型指定
フィールドの型を指定することで、コードの可読性と保守性を向上させることができます。型ヒントは、変数の型を明示的に指定するために使用します。
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
is_adult: bool = False
型ヒントを指定することで、IDEによるコード補完やエラーチェックが有効になります。
デフォルト値の設定
フィールドにデフォルト値を指定することで、インスタンス作成時にすべてのフィールドに値を指定する必要がなくなります。
from dataclasses import dataclass
@dataclass
class Person:
name: str = "Unknown"
age: int = 0
デフォルト値は、`=`を使って指定します。デフォルト値は、フィールドの型と一致する必要があります。
メソッドの追加
データクラスは通常のクラスと同様に、メソッドを追加することができます。
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
def is_adult(self) -> bool:
return self.age >= 18
メソッドを追加することで、データクラスの機能を拡張することができます。
データクラスの利点
データクラスを使うことで、以下のような利点があります。 * クラスの記述が簡潔になる * コードの可読性が向上する * 型ヒントが利用できる * デフォルト値の設定が容易になる
- データクラスは、主にデータ保持を目的としたクラスに適しています。 複雑なビジネスロジックを実装するクラスには、通常のクラスを使用する方が適切な場合があります。
サンプルコード
以下は、データクラスを使った簡単なサンプルコードです。
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
person = Person(name="Alice", age=30)
print(person)
print(person.name)
print(person.age)
print(person.is_adult()) # メソッド呼び出し
実行結果: Person(name='Alice', age=30) Alice 30 True
関連記事
- Pythonでクラスを定義(class)
- Pythonでインスタンス変数・クラス変数を使う
- Pythonで継承を使う
- Pythonで特殊メソッドを使う(__str__, __repr__, __add__ など)
- Pythonでプロパティを使う(@property, @setter, @deleter)
- Pythonで静的メソッド・クラスメソッドを使う(@staticmethod, @classmethod)
- Pythonで名前付きタプルを使う(collections.namedtuple, typing.NamedTuple (Python 3.6以降))
- PythonでEnumを使う(enum.Enum)
- Pythonでデータクラスを使う(dataclasses.dataclass, Python 3.7以降)
- Pythonで関数に型ヒントをつける (Python 3.5以降)