0Pricing
Python Academy · Ders

attrs Kütüphanesi

attrs ile dataclasses'ı karşılaştırın

attrs Kütüphanesi, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. 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.

attrs Nedir?

attrs, dataclasses standart kitaplığa girmeden yıllar önce alanlardan sınıf oluşturma fikrini ortaya atan üçüncü taraf bir kitaplıktır. Standart dataclasses modülü doğrudan bundan esinlenmiştir.

  • attrs ayrı olarak kurulmalıdır: pip install attrs.
  • Veri sınıflarından daha fazla özellik sunar.
  • dataclasses yerleşiktir ve günlük ihtiyaçların çoğunu karşılar.

Modern attrs Arayüzü

Modern attrs, attrs ad alanındaki @define ve field() ögelerini kullanır. Yapısı bir veri sınıfına çok benzer.

from attrs import define, field

@define
class Point:
    x: int
    y: int

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

Varsayılan Olarak Yuvalar

Büyük bir fark şudur: @define sınıfları __slots__ ögesini otomatik olarak kullanır. Bu, bellek kullanımını azaltır ve tanımlanmamış özniteliklerin yanlışlıkla eklenmesini önler. Düz veri sınıfları, slots=True iletmediğiniz sürece normal bir __dict__ kullanır (Python 3.10+).

Yerleşik Doğrulayıcılar

attrs, kullanıma hazır doğrulayıcılarla birlikte gelir. Bir alan, oluşturma sırasında çalışacak ve değer geçersizse hata verecek bir doğrulayıcı tanımlayabilir. Veri sınıflarında yerleşik doğrulama yoktur; bunu __post_init__ içinde kendiniz yazarsınız.

from attrs import define, field
from attrs.validators import instance_of

@define
class User:
    age: int = field(validator=instance_of(int))

User(30)        # ok
User('oops')    # raises TypeError

Dönüştürücüler

Bir dönüştürücü, girdi değerini depolanmadan önce dönüştürür. Örneğin, bir dizeyi otomatik olarak tamsayıya dönüştürebilirsiniz. Bu, veri sınıflarında bulunmayan başka bir özelliktir.

from attrs import define, field

@define
class Item:
    price: int = field(converter=int)

i = Item('42')   # stored as the integer 42
print(i.price)

Veri Sınıfı Karşılığı

Aynı fikrin standart kitaplıkla ifade edilmiş hâli şöyledir. Veri sınıfları alan başına kanca sunmadığı için doğrulama ve dönüştürme işlemlerini __post_init__ içinde elle yapmanız gerekir.

from dataclasses import dataclass

@dataclass
class Item:
    price: int

    def __post_init__(self):
        self.price = int(self.price)

print(Item('42'))

Her İki Kitaplıkta da asdict

Her iki kitaplık da bir asdict yardımcısı sunar. Veri sınıfına ait olan dataclasses içinde, attrs'a ait olan ise attrs içinde bulunur. Davranışları neredeyse aynıdır.

from dataclasses import dataclass, asdict

@dataclass
class Point:
    x: int
    y: int

print(asdict(Point(1, 2)))

attrs'ta Değişmezlik

attrs değişmezliği de destekler. Salt okunur örnekler için @frozen kullanın; bu, @define(frozen=True) kısaltmasıdır ve @dataclass(frozen=True) ile aynı işlevi görür.

from attrs import frozen

@frozen
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p)
# p.x = 9  would raise FrozenInstanceError

Özellik Karşılaştırması

Karşılaştırma şöyledir:

  • dataclasses: standart kitaplıktadır, kurulum gerektirmez ve temel ihtiyaçları karşılar.
  • attrs: doğrulayıcılar, dönüştürücüler, varsayılan yuvalar ve daha fazla yapılandırma seçeneği sunar.
  • Her ikisi de __init__, __repr__ ve __eq__ oluşturur.

Hangisini Kullanmalısınız?

Ek bir bağımlılık gerektirmeyen basit veri taşıyıcıları için dataclasses seçin. Doğrulayıcılara, dönüştürücülere veya daha zengin yapılandırma seçeneklerine ihtiyacınız varsa ve bir bağımlılık eklemeyi kabul ediyorsanız attrs kullanın. Pek çok proje dataclasses ile başlar ve ancak ihtiyaçlarını aşarsa attrs'a geçer.

Ortak Köken

dataclasses, attrs'tan çok şey aldığı için ikisi arasında geçiş yapmak genellikle mekaniktir: içe aktarmayı ve dekoratörü değiştirip doğrulayıcıları veya dönüştürücüleri uyarlamanız yeterlidir. Birini bilmek diğerini de hemen tanıdık hâle getirir.

  • @define, @dataclass karşılığıdır.
  • attrs.field, dataclasses.field karşılığıdır.
  • dataclasses'a geçerken doğrulayıcılar __post_init__ içine taşınır.

Hızlı Kontrol

attrs'ın standart dataclasses modülünde yerleşik olarak sunmadığı özellik hangisidir?

Özet

attrs ile dataclasses'ı karşılaştırdınız.

  • attrs, dataclasses'a esin kaynağı olmuş ve daha fazla özellik sunar.
  • attrs, varsayılan olarak doğrulayıcılar, dönüştürücüler ve yuvalar ekler.
  • dataclasses yerleşiktir ve kurulum gerektirmez.
  • İhtiyaçlarınızı karşılayan en basit aracı seçin.

Sıkça Sorulan Sorular

“attrs Kütüphanesi” dersi ücretsiz mi?

Evet — “attrs Kütüphanesi” 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.

“attrs Kütüphanesi” dersinde ne öğreneceğim?

attrs ile dataclasses'ı karşılaştırı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 4. dersidir.

“attrs Kütüphanesi” 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