工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python Data Class:データを保存するためのより良い方法

Python データ クラスは、@dataclass を持つ通常の Python クラスです。 デコレータ。データを保持するために特別に作成されます。 Python バージョン 3.7 以降、Python は dataclass と呼ばれる組み込みモジュールを通じてデータ クラスを提供します。 .この記事では、通常の Python クラスに比べていくつかの利点があります。また、サンプル コードと、データ クラスで実行する可能性のあるいくつかの一般的な操作についても説明します。

目次

データ クラスを使用する利点

通常の Python クラスの代わりにデータ クラスを使用する必要があるのはなぜですか?まず、Python データ クラスが提供する利点をいくつか見てみましょう。

必要最小限のコード

@dataclass デコレーターは、目に見えるコードを追加することなく、多くの機能をクラスに追加します。これにより、多くの便利な機能を提供しながら、データ クラスを非常にコンパクトにすることができます。必要なのは、データを保持するフィールドを定義することだけです。関数を定義する必要はありません。

比較

2 つの Python データ クラスを == と比較できます いわゆるダンダーメソッド __eq__ が自動的に実装されるためです。一般に、この特別なメソッドを実装する任意の Python オブジェクトを同じタイプの他のオブジェクトと比較できます。

データ クラスの出力

同様に、 __repr__ のため が実装されているため、データ クラスを出力して、その適切な表現を取得できます。これはデバッグに特に役立ちます。

データ クラスにはタイプ ヒントが必要

データ クラスは、Python が提供する新しい (っぽい) 型システムを中心に構築されています。型ヒントを使用すると、コードでバグや予期しない動作が発生する可能性が低くなります。基本的に、変数に格納する必要があるデータの型を宣言します。

Python データ クラスの例

動作中のデータ クラスの例を次に示します。

from dataclasses import dataclass

@dataclass
class Card:
    rank: str
    suit: str
    
card1 = Card("Q", "hearts")
card2 = Card("Q", "hearts")

print(card1 == card2)
# True

print(card1.rank)
# 'Q'

print(card1)
Card(rank='Q', suit='hearts')

デフォルト値

データ クラスにはデフォルト値を設定できます。デフォルト値の割り当ては、変数に値を割り当てるのと同じくらい簡単です。たとえば、Card クラスのデフォルト値をハートのクイーンにするには、次のようにします。

from dataclasses import dataclass

@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

データ クラスを JSON に変換する

一般的な使用例は、適切に構造化されたデータ クラスを JSON に変換することです。たとえば、データをデータベースにエクスポートしたり、ブラウザに送信したりする場合です。ここで悪いニュース:データ クラスを JSON に変換する組み込みの方法がありません。

幸いなことに、このタスクを簡素化する dataclasses-json という Python パッケージがあります。ただし、追加のデコレータが必要です。 pip install コマンドまたは Pipenv などを使用して、できれば仮想環境内にパッケージをインストールする必要があります。例:

$ pip install dataclasses-json

パッケージの使用方法の例を次に示します:

from dataclasses import dataclass
from dataclasses_json import dataclass_json

@dataclass_json
@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

card = Card()
print(card.to_json())
{"rank": "Q", "suit": "hearts"}

もう 1 つの方法は、Python 継承を使用し、JSONEncoder クラスから継承して独自のカスタム エンコーダーを作成することです。ここでの利点は、外部パッケージをインストールする必要がないことです。このブログ投稿でこれを行う方法を学ぶことができます。

学び続ける


Python

  1. Python データ型
  2. Python の型変換と型キャスト
  3. Python 演算子
  4. Python カスタム例外
  5. Python オブジェクト指向プログラミング
  6. Python の継承
  7. データセンターの統合により、データの保存方法がどのように変化しているか
  8. Python の type() と isinstance() と例
  9. Java-データ構造
  10. C++ でのデータの抽象化
  11. C++ でのデータのカプセル化