Python: dataclass’lar
Kısaca: Bir @dataclass, ağırlıklı olarak veri tutan bir sınıf için __init__, __repr__ ve karşılaştırmaları otomatik üretir. Bu, çok sayıda kalıp kodu tasarruf ettirir.
Biraz daha ayrıntılı: Yapıcıyı ve metin gösterimini elle yazmak yerine yalnızca alanları türleriyle listelersin.
Ayrıntılı
from dataclasses import dataclass, field
@dataclass
class Urun:
ad: str
fiyat: float
etiketler: list[str] = field(default_factory=list)- Otomatik:
Urun("Kupa", 4.5)çalışır,print(p)Urun(ad='Kupa', fiyat=4.5, etiketler=[])gösterir,==alan alan karşılaştırır. - Varsayılanlar: Değiştirilebilir varsayılanları (liste, sözlük) asla doğrudan koyma;
field(default_factory=list)kullan. - Seçenekler:
frozen=Truenesneleri değiştirilemez ve hash’lenebilir yapar,order=Truesıralama karşılaştırmaları üretir,slots=Truebellek tasarrufu sağlar. __post_init__: Yapıcıdan sonra çalışır; denetimler veya türetilmiş alanlar için.- Yardımcılar:
asdict(p)vereplace(p, fiyat=5)(değişiklikli kopya). - Karşılaştırma:
NamedTupledeğiştirilemez ve demet benzeridir,dict’in sabit yapısı yoktur, Pydantic ek olarak çalışma zamanında doğrular.
Ayrıca bak: Tür ipuçları