@dataclass
- Python kursu
- Orta seviye
- Ders 21/116
- 5 dk
@dataclass ile veri sınıfını öğrenirsin.
@dataclass decorator
@dataclass decorator'ı, sınıfın yazılımını sadeleştirir. Tür ek açıklamalı (annotated) özniteliklerden __init__, __repr__ ve __eq__ metotlarını otomatik üretir.
Örnek: from dataclasses import dataclass\n@dataclass\nclass Product:\n name: str\n price: float. Bu, elle yazılmış __init__ ve __repr__'a gerek bırakmaz. Product("Kalem", 5.0) örneği hazır olur; print(p) düzgün bir temsil yazdırır. Kapsülleme için veri taşıyan sınıflarda işe yarar.
Tür ek açıklamaları
@dataclass sınıfında her öznitelik bir tür ek açıklaması (annotation) ile yazılır: name: str, price: float. Bu ek açıklamalar, decorator'a hangi öznitelikleri üretmesi gerektiğini söyler.
Değişebilir (mutable) varsayılanlar için field(default_factory=list) kullanılır; [] doğrudan yazılamaz. Bu derste yalnızca sabit varsayılanları kullanacağız. Ek açıklama, kapsüllemeyi bozmaz; yalnızca veri düzenini belirtir.
Uygulama Product veri sınıfını tanımla
Önce from dataclasses import dataclass yaz. Sonra @dataclass decorator'ı ve class Product: tanımla. Gövdeye name: str ve price: float ek açıklamalarını ekle. Sonra p = Product("Kalem", 5.0) ile örnek oluştur ve print(p) ile yazdır.
Başlangıç kodu
# Product veri sınıfını tanımlaÖrnek çözüm
# Product veri sınıfını tanımla
from dataclasses import dataclass
@dataclass
class Product:
name: str
price: float
p = Product("Kalem", 5.0)
print(p)Beklenen çıktı
Product(name='Kalem', price=5.0)
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi decorator __init__'i otomatik üretir?
- @dataclass Doğru cevap
- @classmethod
- @property
- @staticmethod
Açıklama: @dataclass, tür ek açıklamalı özniteliklerden __init__ üretir.
2 dataclass import'unu tamamla
from dataclasses import ____
@dataclass
class Product:
name: str
price: float
from dataclasses import dataclass
@dataclass
class Product:
name: str
price: float
Açıklama: dataclass fonksiyonu dataclasses modülünden içe aktarılır.
3 @dataclass kavramlarını eşle
| Kavram | Anlamı |
|---|---|
@dataclass |
Decorator |
name: str |
Tür ek açıklaması |
__repr__ |
Otomatik üretim |