Kelas data dalam Python, yang diperkenalkan di Python 3.7 melalui modul dataclasses
, menyediakan cara yang mudah untuk membuat kelas yang digunakan terutamanya untuk menyimpan data. Mereka direka untuk menghasilkan kaedah biasa seperti __init__
, __repr__
, dan __eq__
berdasarkan atribut kelas, yang mengurangkan kod boilerplate.
Kelebihan utama kelas data melalui kelas biasa ialah:
__init__
, __repr__
, __eq__
, dan lain -lain, yang boleh diubah suai dengan mudah atau ditindih jika diperlukan.frozen=True
, yang menyediakan keselamatan tambahan dengan menghalang perubahan yang tidak diingini kepada keadaan.Kelas data memudahkan kod dalam beberapa cara:
Penjanaan kaedah automatik : Seperti yang disebutkan, kelas data secara automatik menjana kaedah seperti __init__
, __repr__
, dan __eq__
. Ini bermakna anda tidak perlu menulis kaedah ini secara manual, yang boleh menjadi rawan kesilapan dan memakan masa.
Sebagai contoh, dengan kelas tradisional, anda mungkin menulis:
<code class="python">class Point: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return f'Point(x={self.x}, y={self.y})' def __eq__(self, other): if isinstance(other, Point): return self.x == other.x and self.y == other.y return False</code>
Dengan kelas data, anda boleh mencapai hasil yang sama dengan kod yang kurang:
<code class="python">from dataclasses import dataclass @dataclass class Point: x: float y: float</code>
__lt__
, __le__
, __gt__
, __ge__
, dan __hash__
, yang berguna untuk menyusun dan menggunakan contoh dalam set atau sebagai kunci kamus.Kelas data menawarkan beberapa ciri yang meningkatkan kecekapan pengaturcaraan Python:
Penyesuaian medan : Penghias @dataclass
membolehkan penyesuaian medan melalui fungsi field
. Ini membolehkan anda menentukan sifat tambahan seperti nilai lalai, mutabiliti, dan tingkah laku perbandingan.
Contoh:
<code class="python">from dataclasses import dataclass, field @dataclass class InventoryItem: name: str unit_price: float quantity_on_hand: int = field(default=0, compare=False)</code>
Post-initialization : Kaedah __post_init__
boleh ditindih untuk melakukan inisialisasi tambahan selepas kaedah __init__
automatik telah menetapkan atribut.
Contoh:
<code class="python">@dataclass class Rectangle: width: float height: float def __post_init__(self): if self.width </code>
Immutability : Dengan menetapkan frozen=True
dalam penghias @dataclass
, anda boleh membuat kelas data yang tidak berubah, yang berguna untuk mewakili data yang tetap dan meningkatkan keselamatan kod.
Contoh:
<code class="python">@dataclass(frozen=True) class Point: x: float y: float</code>
Menggunakan kelas data akan lebih bermanfaat daripada menggunakan kelas biasa dalam beberapa senario:
frozen=True
menyediakan cara yang mudah untuk mencapai matlamat ini.__repr__
dan kaedah lain dalam kelas data membuat ujian dan debugging lebih mudah, kerana lebih mudah untuk memeriksa dan membandingkan keadaan.Ringkasnya, kelas data adalah ciri yang kuat dalam Python yang dapat memudahkan kod dan meningkatkan kecekapan, terutamanya dalam senario di mana pengurusan data adalah kebimbangan utama.
Atas ialah kandungan terperinci Apakah kelas data dalam Python (menggunakan modul DataClasses)? Apakah kelebihan mereka berbanding kelas biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!