0Pricing
Python Academy · Ders

Dataclass Tanımlama

Gereksiz kodları kaldırmak için @dataclass kullanın.

Dataclass Tanımlama, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Veri Sınıfları Neden Kullanılır?

Çoğunlukla veri tutan bir sınıf yazdığınızda aynı şablon kodu tekrar tekrar yazarsınız: bir __init__, bir __repr__ ve bir __eq__. veri sınıfları modülü, basit alan bildirimlerinden bunların tamamını sizin için oluşturur.

  • Yazılacak ve okunacak daha az kod.
  • __init__ içinde yazım hatası yapma olasılığının azalması.
  • Python 3.7'den beri standart kitaplıkta yerleşik olması.

Eski Yöntem

Burada bir noktayı saklayan sıradan bir sınıf bulunmaktadır. Yalnızca iki sayıyı saklamak için ne kadar çok kod yazılması gerektiğine dikkat edin.

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)
print(p.x, p.y)

@dataclass Dekoratörü

Bir sınıfın üstüne @dataclass uygulayın ve alanları tür açıklamalarıyla bildirin. Python, __init__ yöntemini otomatik olarak oluşturur.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p.x, p.y)

Otomatik __repr__

Veri sınıfları ayrıca okunabilir bir __repr__ oluşturur; böylece nesneyi yazdırdığınızda bellek adresi yerine alanları gösterilir.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(3, 4))

Otomatik __eq__

Bir veri sınıfının iki örneği, tüm alanları eşit olduğunda eşit kabul edilir. __eq__ yöntemini elle yazmanız gerekmez.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(1, 2) == Point(1, 2))
print(Point(1, 2) == Point(9, 9))

Tür Açıklamaları Zorunludur

Her alanın bir tür açıklaması olmalıdır. Veri sınıfı mekanizmasına bu adın bir alan olduğunu bildiren şey açıklamadır. Açıklama olmadan yapılan yalın bir atama, alan değil, normal bir sınıf özniteliği olur.

from dataclasses import dataclass

@dataclass
class User:
    name: str
    age: int

u = User('Alice', 30)
print(u)

Metot Ekleme

Bir veri sınıfı hâlâ normal bir sınıftır. Oluşturulan alanları kullanan sıradan metotlar ekleyebilirsiniz.

from dataclasses import dataclass

@dataclass
class Rectangle:
    width: int
    height: int

    def area(self):
        return self.width * self.height

r = Rectangle(3, 4)
print(r.area())

Alanları Değiştirme

Varsayılan olarak veri sınıfı örnekleri değiştirilebilirdir; bu nedenle oluşturulduktan sonra alanları normal öznitelikler gibi yeniden atayabilirsiniz.

from dataclasses import dataclass

@dataclass
class Counter:
    value: int

c = Counter(0)
c.value += 5
print(c.value)

asdict ve astuple

asdict() ve astuple() yardımcıları bir örneği sözlüğe veya demete dönüştürür; bu, serileştirme için kullanışlıdır.

from dataclasses import dataclass, asdict, astuple

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(asdict(p))
print(astuple(p))

İç İçe Veri Sınıfları

Bir veri sınıfı alanının kendisi başka bir veri sınıfı olabilir. Oluşturulan __repr__ ve asdict(), iç içe yapılarda özyinelemeli olarak çalışır.

from dataclasses import dataclass, asdict

@dataclass
class Address:
    city: str

@dataclass
class Person:
    name: str
    address: Address

p = Person('Bob', Address('Paris'))
print(asdict(p))

Veri Sınıfları Ne Zaman Kullanılır

Bir sınıf çoğunlukla ilişkili değerleri bir arada grupluyorsa veri sınıfını tercih edin.

  • Yapılandırma nesneleri.
  • Bir işlevden döndürülen kayıtlar.
  • Koordinatlar veya para gibi basit değer türleri.

Veriden çok davranışın ön planda olduğu sınıflar için normal bir sınıf daha anlaşılır olabilir.

Kısa Kontrol

@dataclass dekoratörü otomatik olarak ne oluşturur?

Özet

Şablon kodu ortadan kaldırmak için @dataclass kullanmayı öğrendiniz.

  • Alanları tür açıklamalarıyla bildirin.
  • __init__, __repr__ ve __eq__ oluşturulur.
  • Örnekleri dönüştürmek için asdict() ve astuple() kullanın.
  • Yine de metot ekleyebilir ve veri sınıflarını iç içe yerleştirebilirsiniz.

Sıkça Sorulan Sorular

“Dataclass Tanımlama” dersi ücretsiz mi?

Evet — “Dataclass Tanımlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Dataclass Tanımlama” dersinde ne öğreneceğim?

Gereksiz kodları kaldırmak için @dataclass kullanın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Dataclass Tanımlama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Dataclass Tanımlama
  2. Varsayılan Değerler ve field()
  3. Dondurma ve Karşılaştırma Seçenekleri
  4. attrs Kütüphanesi
← Python Academy Sayfasına Dön