frozen
- Python kursu
- Orta seviye
- Ders 55/116
- 4 dk
@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
# Color sınıfını frozen veri sınıfı olarak yazÖrnek çözüm
# 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ı
@dataclass(____)
class Color:
r: int = 0
g: int = 0
b: int = 0
@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ı |