Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのデータクラス(dataclasses)


dataclassesは、バージョン3.7以降にPythonの標準ライブラリに追加された新しいモジュールです。コンストラクターマジックメソッド__init__()、文字列表現メソッド__repr __()、ユーザー定義クラスの==演算子(およびその他いくつか)をオーバーロードする__eq __()メソッドを自動的に生成する@dataclassデコレーターを定義します。

データクラスデコレータには次の署名があります

dataclass(init=True, repr=True, eq=True, order=False, unsafe_hash=False, frozen=False)

すべての引数は、それぞれのマジックメソッドが自動的に生成されるかどうかを示すブール値を取ります。

'init'引数はデフォルトでTrueです。クラスの__init__()メソッドが自動的に生成されます。

次のようにデータクラスデコレータを使用してStudentクラスを定義しましょう

from dataclasses import dataclass

@dataclass
class Student(object):
   name : str
   age : int
   percent : float

自動生成された__init__()メソッドは次のようなものです

def __init__(self, name: str, age: int, percent: float):
   self.name = name
   self.age = age
   self.percent = percent

クラスが__init__()メソッドを明示的に定義している場合、initパラメーターは無視されます。

repr引数は、デフォルトでもtrueです。したがって、__ repr __()メソッドは自動的に生成されます。 __repr __()は、オブジェクトの正式な文字列表現です。クラスがすでに__repr__()を定義している場合、このパラメーターは無視されます。

eq引数はデフォルトでtrueです。これにより、__ eq __()メソッドが自動生成されます。このメソッドは、equals比較演算子(==)に応答して呼び出されます。この場合も、クラスがすでに__eq __()を定義している場合、このパラメーターは無視されます。

'order'パラメーターがtrue(デフォルトはFalse)の場合、比較用のマジックメソッド、__ lt __()、__ le __()、__ gt __()、および__ge __()メソッドが自動生成され、比較演算子を実装します<<=>ans>=それぞれ。 orderがtrueでeqがfalseの場合、ValueErrorが発生します。クラスがこれらのメソッドのいずれかをすでに定義している場合)、TypeErrorになります。

unsafe_hash引数False(デフォルト)の場合、eqとfrozenの設定方法に従って__hash __()メソッドが生成されます。

凍結された引数:true(デフォルトはFalse)の場合、読み取り専用の凍結されたインスタンスをエミュレートします。

>>> from data_class import Student
>>> s1=Student('Naveen', 21, 50.50)
>>> s2=Student('Mangesh', 20, 50.00)
>>> s1==s2
False
>

asdict()

この関数は、クラスインスタンスをディクショナリオブジェクトに変換します。

>>> import dataclasses
>>> dataclasses.asdict(s1)
{'name': 'Naveen', 'age': 21, 'percent': 50.5}

astuple()

この関数は、クラスインスタンスをタプルオ​​ブジェクトに変換します。

>>> dataclasses.astuple(s2)
('Mahesh', 20, 50.0)

make_dataclass()

この関数は、fields引数として指定されたタプルのリストから新しいデータクラスを作成します。

>>> NewClass=dataclasses.make_dataclass('NewClass', [('x',int),('y',float)])
>>> n = NewClass(10,20)
>>> n
NewClass(x=10, y=20)

  1. Pythonのdir()メソッド

    dir()関数は、関数、モジュール、文字列、リスト、辞書などのオブジェクトの属性とメソッドのリストを返します。この記事では、プログラム内でさまざまな要件に対してさまざまな方法でdir()を使用する方法を説明します。 。 dir()のみ 他のモジュールをプログラムにインポートせずにdir()の値を出力すると、Pythonプログラムの初期化時に使用できる標準ライブラリの一部として使用できるメソッドと属性のリストが取得されます。 例 Print(dir()) 出力 上記のコードを実行すると、次の結果が得られます- ['__annotations__', '__built

  2. Python-Pandas .query()メソッドを使用したデータのフィルタリング

    Pandasは、データクレンジング、データ分析などに非常に広く使用されているPythonライブラリです。この記事では、クエリメソッドを使用して特定のデータセットから特定のデータをフェッチする方法を説明します。クエリ内に単一の条件と複数の条件の両方を含めることができます。 データの読み取り まず、pandasライブラリを使用してデータをpandasデータフレームに読み込みます。以下のプログラムはそれを実行します。 例 import pandas as pd # Reading data frame from csv file data = pd.read_csv("D:\\hear