🍎Data Classes
Struct benzeri özelleştirilmiş veri sınıfları
🔰 Nedir?
🗃️ Değişkenleri olan ve diğer dillerdeki struct yapısına benzeyen sınıflardır
🌟
__init__
,__repr__
gibi metotları otomatik olarak tanımlanır💁♂️
namedTuple
gibidir ama değişkenlere sahip olup, varsayılan değer atamalarını destekler
from dataclasses import dataclass
@dataclass
class Point:
x: float
y: float
z: float = 0.0 # Varsayılan değer atama
p = Point(1.5, 2.5) # z değeri verilmediği için varsayılan değer atanır
print(p) # Point(x=1.5, y=2.5, z=0.0)
class C:
x: int
y: int = field(repr=False)
z: int = field(repr=False, default=10)
t: int = 20
🕖 Post-init Yapısı
⏳Değişken tanımlamalarından sonra
field(init=false)
olarak tanımlanan değişkenler için tekrardan birinit
işlemi yapılır👷♂️
__post__init__
metodu ileinit
işlemi tamamlandıktan sonra, değişkenleri kullanarak yeni değerler üretebilir ve değişkenlere atayabiliriz
@dataclass
class C:
a: float
b: float
c: float = field(init=False) # __post_init__ içerisinde tanımlanacak
def __post_init__(self):
self.c = self.a + self.b
🍎 Key - value çifti içeren dict
üretme
dict
üretmedataclass
verilerinidict
yapısında oluşturmayı sağlaryaml
,json
gibi alanlarda çalışırken faydalıdır
from dataclasses import dataclass, asdict
@dataclass
class Point:
x: int
y: int
@dataclass
class C:
mylist: list[Point]
p = Point(10, 20)
assert asdict(p) == {'x': 10, 'y': 20}
c = C([Point(0, 0), Point(10, 4)])
assert asdict(c) == {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}
Last updated
Was this helpful?