Python3.7データクラスの概要
ITプロフェッショナル向けのリソースライブラリをご覧ください。専門家によるガイド、可観測性戦略、そして実践的なインサイトを活用して、よりスマートでAI主導の運用を実現しましょう。
リソースを探索する
最新のブログ、ホワイトペーパー、電子ガイドなどを直接受信ボックスにお届けします。
ビデオはまもなく始まります
ちょっとオタクするのが楽しいこともあります。 Pythonは今日最も人気のあるスクリプト言語のXNUMXつであり、私たちもそれを気に入っています。 これが、LogicMonitorができる理由のXNUMXつです。 ご使用の環境でサポートされているスクリプトまたはプログラミング言語を実行します。 つまり、お気に入りの監視ツールでお気に入りの言語の最新機能を楽しむことができます(そうですか?)。 Pythonが副業である場合は、Python3.7のデータクラスを試してみてください。
Javaの拡張機能であるGroovyとPowerShellは、ユーザーフレンドリーな方法でOOPを強力にサポートしていると私が信じているXNUMXつの言語です。 カスタムオブジェクトをすばやく操作し、その値をレポートできます。 Pythonは非常に人気があり強力ですが、少し遅れています。 過去の例をいくつか見るには、インターネットで「Python印刷クラス属性」を検索してください。 この記事の時点で、最も人気のある開発者リソースのXNUMXつであるStackOverflowからの上位の検索結果の一部を次に示します。
あなたが検索しようとするとそれはあまり良くありません クラスの公式Python2.7ドキュメント。 彼らの例がクラスに関する情報を印刷するたびに、あなたがあなたが見せたいものを正確にすでに知っていると仮定している、またはあなたが各クラス属性を明示的に印刷することに時間を費やしても構わないと思っていることに注意してください。
検索結果と回答、および私自身の経験に基づいて、カスタムPythonオブジェクトを操作する上でXNUMXつの主な課題がありました。
スクリプトにあまり詳しくない人のために、アナロジーを使用して問題を説明しましょう。 Pythonクラスオブジェクトを、物語でいっぱいの物理的な新聞として想像してみましょう。 この新聞を印刷したのはあなたです。 あなたはすでに物語を知っています。 各段落、ストーリー、見出しを注意深く配置しました。 以前のPythonバージョンでは、新聞をPythonに渡して、健全性チェックとしてニュースレポートのいずれかを読むように依頼すると、ストーリー全体を提供するだけでなく、読みたい各段落を指定するようになりました。 あなたの幼児がそれを言うときかわいい; あなたの30歳の意欲的なジャーナリストがそれを言うとき、イライラし、心配します。
2017年には、 PEP557 「主に属性ルックアップによってアクセス可能な値を格納するために存在する」概念化されたデータクラス、およびほぼ3.7.0年後、PythonXNUMXのリリースは正式に実装を提供しました。 データ型は型ヒントから便乗します(PEP484)および型注釈(PEP526)、それぞれPython3.5および3.6で導入されました。 オブジェクトの操作に関しては、人々は一貫してデータ型を予測できることを期待しています。 Pythonはまだ厳密に型指定された言語ではありませんが、型ヒントと注釈の組み合わせは、ユーザーとIDEの両方が、より大きなコードベースで作業するときに予想されるデータ型を知るのに役立ちます。
成熟のもう一つの部分は、あなたが気にかけていることと、それに集中してより多くの時間を費やす方法について正直であることです。 私だけの可能性もありますが、DataClassesが売られすぎているように感じます。あるいは、誰かが退屈なプロセスを処理することを本当に楽しんでいます。 からの正確な言葉 PEP557 データクラスに関しては、「[…]クラスについて特別なことは何もありません。デコレータは生成されたメソッドをクラスに追加し、指定されたのと同じクラスを返します。 […]データクラスを使用すると、これらのメソッドを作成および保守する必要がなくなります。」
これらの「生成されたメソッド」とは何ですか? 幸いなことに PEP557の要約 例を示します。 次のように定義されたPythonクラスがあるとします。
@dataclass class InventoryItem: '' '在庫内のアイテムを追跡するためのクラス' ''名前:str unit_price:float amount_on_hand:int = 0 def total_cost(self)-> float:return self.unit_price * self.quantity_on_hand
したがって、データクラスデコレータ(「@dataclass」)は、次のコードを自動的に生成します。
def __init __(self、name:str、unit_price:float、quantity_on_hand:int = 0)-> None:self.name = name self.unit_price = unit_price self.quantity_on_hand = amount_on_hand def __repr __(self):return f'InventoryItem(name = {self.name!r}、unit_price = {self.unit_price!r}、quantity_on_hand = {self.quantity_on_hand!r}) 'def __eq __(self、other):if other .__ class__ is self .__ class __:return(self .name、self.unit_price、self.quantity_on_hand)==(other.name、other.unit_price、other.quantity_on_hand)return NotImplemented def __ne __(self、other):if other .__ class__ is self .__ class __:return(self.name 、self.unit_price、self.quantity_on_hand)!=(other.name、other.unit_price、other.quantity_on_hand)return NotImplemented def __lt __(self、other):if other .__ class__ is self .__ class __:return(self.name、self .unit_price、self.quantity_on_hand)<(other.name、other.unit_price、other.quantity_on_hand)return NotImplemented def __le __(self、other):if other .__ class__ is self .__ class __:return(self.name、s elf.unit_price、self.quantity_on_hand)<=(other.name、other.unit_price、other.quantity_on_hand)return NotImplemented def __gt __(self、other):if other .__ class__ is self .__ class __:return(self.name、self。 unit_price、self.quantity_on_hand)>(other.name、other.unit_price、other.quantity_on_hand)return NotImplemented def __ge __(self、other):if other .__ class__ is self .__ class __:return(self.name、self.unit_price、self .quantity_on_hand)> =(other.name、other.unit_price、other.quantity_on_hand)return NotImplemented
それらの 30 自動生成されたコードの行は 三 属性:name、unit_price、およびquantity_on_hand。 これが大幅に売られていないと私が信じる理由は、クラス属性を追加すると、これらのメソッドを自分で作成して維持するための労力のレベルが非常に面倒になるためです。 誰がそれに対処したいと思いますか? そうですね、Pythonの寄稿者であるEric V. Smithはそうしていますが、部分的には彼に感謝しています。 フォーム する必要はありません!
これまでに得た情報に基づいて、データクラスの多くのメリットを確認できます。
some_variableを出力します
あたり PEP557、データクラスは、他のPythonライブラリを完全に置き換えることを意図したものではありません。 さらに、PEPの記事には、次の場合にデータクラスが適切でないと記載されています。
Pythonデータクラスは、既存のPython機能を簡潔な宣言型構文に組み合わせて、主にデータストレージに使用されるクラスを管理する際のエクスペリエンスを向上させます。 Pythonデータクラスの主な利点のXNUMXつは、クラスとその属性の文字列表現をすばやく印刷できることです。 LogicMonitorの強力な拡張性により、Pythonデータクラスを他のすべての最新のPython機能の中で活用できます。 モニタリング ポータル管理.
© LogicMonitor 2025 | 無断複写・転載を禁じます。 | ここで言及されているすべての商標、商号、サービス マーク、およびロゴは、それぞれの会社に帰属します。