CodeBlanks Logo Icon CodeBlanks

@dataclass

@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

main.py
# Product veri sınıfını tanımla

Örnek çözüm

main.py
# 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

Soru
from dataclasses import ____

@dataclass
class Product:
    name: str
    price: float
Cevap
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

Orta seviye bölümündeki tüm dersler