EMZETT.
Giriş yap

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=True nesneleri değiştirilemez ve hash’lenebilir yapar, order=True sıralama karşılaştırmaları üretir, slots=True bellek tasarrufu sağlar.
  • __post_init__: Yapıcıdan sonra çalışır; denetimler veya türetilmiş alanlar için.
  • Yardımcılar: asdict(p) ve replace(p, fiyat=5) (değişiklikli kopya).
  • Karşılaştırma: NamedTuple değ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ı