CodeBlanks Logo Icon CodeBlanks

frozen

@dataclass(frozen=True) ile değişmez veri sınıfını öğrenirsin.

frozen=True

@dataclass(frozen=True), veri sınıfını değişmez (immutable) yapar. Örnek oluşturulduktan sonra alanlarına yeni değer atayamazsın; denersen FrozenInstanceError alırsın. Bu, sabit değerler için idealdir.

Örnek: @dataclass(frozen=True)\nclass Color:\n r: int = 0\n g: int = 0\n b: int = 0. c = Color(255, 0, 0) oluşturduktan sonra c.r = 100 yazarsan hata alırsın. hash(c) ise çalışır; frozen sınıflar hash edilebilir.

frozen ve hash

frozen veri sınıfları hash edilebilir. Yani örnekleri sözlük anahtarı ya da küme öğesi olarak kullanabilirsin. hash(c) çağrısı bir sayı döndürür; aynı değere sahip iki örnek aynı sayıyı verir.

Bu özellik, koordinat, renk ya da para birimi gibi sabit değer türleri için kullanışlıdır. Sözlükte anahtar olarak saklamak istediğin değerleri frozen veri sınıfı ile temsil edersin; değişmedikleri için anahtar bozulmaz.

Uygulama Color sınıfını frozen yap

from dataclasses import dataclass ile başla. @dataclass(frozen=True) ile Color sınıfını tanımla; r: int = 0, g: int = 0 ve b: int = 0 alanlarını ekle. Sonra c = Color(255, 0, 0) ile örnek oluştur ve print(c.r) ile yazdır.

Başlangıç kodu

main.py
# Color sınıfını frozen veri sınıfı olarak yaz

Örnek çözüm

main.py
# Color sınıfını frozen veri sınıfı olarak yaz
from dataclasses import dataclass

@dataclass(frozen=True)
class Color:
    r: int = 0
    g: int = 0
    b: int = 0

c = Color(255, 0, 0)
print(c.r)

Beklenen çıktı

255

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 frozen=True neyi engeller?

  • Alan atamasını Doğru cevap
  • Örnek oluşturmayı
  • Sınıf tanımını
  • Print çağrısını

Açıklama: frozen=True örnek oluşturulduktan sonra alan atamasını engeller.

2 frozen süsleyici satırı

Soru
@dataclass(____)
class Color:
    r: int = 0
    g: int = 0
    b: int = 0
Cevap
@dataclass(frozen=True)
class Color:
    r: int = 0
    g: int = 0
    b: int = 0

Açıklama: frozen=True veri sınıfını değişmez yapar.

3 frozen parçalarını eşleştir

Kavram Anlamı
frozen=True Argüman
Color(255, 0, 0) Örnek
FrozenInstanceError Atama hatası
hash(c) Hash çağrısı

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