@dataclass temelleri
- Python kursu
- Orta seviye
- Ders 53/116
- 5 dk
@dataclass ile veri sınıfını öğrenirsin.
@dataclass temelleri
@dataclass süsleyicisi, bir sınıfı veri sınıfı (dataclass) yapar. Sınıf gövdesinde yazdığın alanlara göre kurucu, __repr__ ve __eq__ metotlarını otomatik üretir. dataclasses modülünden içe aktarılır.
Örnek: @dataclass\nclass Point:\n x: int = 0\n y: int = 0. Bu kısa tanım, Point(x=0, y=0) çağrısını, print(p)'i ve p1 == p2 karşılaştırmasını otomatik sağlar. Alan adlarının yanına tür bildirimi yazmak zorunludur; yoksa veri sınıfı çalışmaz.
Tür bildirimi zorunlu
Veri sınıfında her alan adının yanına bir tür yazılmalıdır. x: int = 0 satırında int türü, 0 ise varsayılan değerdir. Tür bildirimi olmadan @dataclass alanları görmez.
Tür yalnızca ipucu amaçlıdır; çalışma anında zorlanmaz. Yani int yazıp sonra p.x = "metin" diyebilirsin; Python buna izin verir. Yine de türü doğru yazmak, kodun okunurluğunu artırır ve araç desteğini güçlendirir.
Uygulama Point veri sınıfını tanımla
from dataclasses import dataclass ile başla. @dataclass ile Point sınıfını tanımla; x: int = 0 ve y: int = 0 alanlarını ekle. Sonra p = Point(3, 4) ile örnek oluştur ve print(p.x, p.y) ile yazdır.
Başlangıç kodu
# Point veri sınıfını tanımlaÖrnek çözüm
# Point veri sınıfını tanımla
from dataclasses import dataclass
@dataclass
class Point:
x: int = 0
y: int = 0
p = Point(3, 4)
print(p.x, p.y)Beklenen çıktı
3 4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 @dataclass neyi otomatik üretir?
- Yalnızca __str__
- Yalnızca __init__
- __init__, __repr__, __eq__ Doğru cevap
- Hiçbir şey
Açıklama: @dataclass kurucu, repr ve eq metotlarını otomatik üretir.
2 import satırını tamamla
from dataclasses import ____
@dataclass
class Point:
x: int = 0
y: int = 0
from dataclasses import dataclass
@dataclass
class Point:
x: int = 0
y: int = 0
Açıklama: dataclass süsleyicisi dataclasses modülündedir.
3 Veri sınıfı parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
@dataclass |
Süsleyici |
x: int = 0 |
Alan tanımı |
Point(3, 4) |
Örnek oluşturma |
__eq__ |
Otomatik karşılaştırma |