CodeBlanks Logo Icon CodeBlanks

@dataclass temelleri

@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

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

Örnek çözüm

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

Soru
from dataclasses import ____

@dataclass
class Point:
    x: int = 0
    y: int = 0
Cevap
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

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