0Pricing
Python Academy · Ders

typing.NamedTuple

Adlandırılmış demetlere tür ipuçları ekleyin

typing.NamedTuple, 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.

Tür Belirtimli Bir Alternatif

typing.NamedTuple temel sınıfı, adlandırılmış demetleri tanımlamanın modern ve sınıf tabanlı bir yoludur. Tür ipuçları ekler ve çoğu düzenleyicinin ve tür denetleyicisinin fabrika biçiminden daha iyi anlayabildiği normal bir sınıf gibi okunur.

Sınıf Tabanlı Sözdizimi

NamedTuple sınıfından türetin ve her alanı bir tür belirtimiyle tanımlayın. Sonuç hâlâ gerçek bir demettir.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

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

Aynı Demet Davranışı

Fabrika biçimindeki her şey hâlâ çalışır: adla erişim, dizinle erişim, paket açma ve değişmezlik.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

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

Satır İçinde Varsayılan Değerler

Bir alana, sınıf gövdesinde değer atayarak kolayca varsayılan değer verebilirsiniz. Varsayılan değerli alanlar, varsayılan değeri olmayan alanlardan sonra gelmelidir.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int
    z: int = 0

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

Yöntem Ekleme

Sınıf olduğu için gerçek yöntemler ekleyebilirsiniz. collections.namedtuple fabrikası bunu düzgün bir şekilde yapamaz.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

    def distance_sq(self):
        return self.x ** 2 + self.y ** 2

print(Point(3, 4).distance_sq())

Özellikler de

Alanlardan değer türeten hesaplanmış özellikler de tanımlayabilirsiniz.

from typing import NamedTuple

class Rectangle(NamedTuple):
    width: int
    height: int

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

print(Rectangle(3, 4).area)

Yardımcı Yöntemler de Kullanılabilir

Tanıdık demet yardımcıları hâlâ kullanılabilir: _replace(), _asdict() ve _fields aynı şekilde çalışır.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

p = Point(1, 2)
print(p._asdict())
print(p._replace(x=9))

Tür İpuçları Amacı Belgeler

Belirtimler çalışma zamanında zorunlu tutulmaz; ancak beklenen türleri belgeler ve mypy gibi araçların programı çalıştırmadan önce hataları yakalamasını sağlar.

from typing import NamedTuple

class Employee(NamedTuple):
    name: str
    salary: float
    active: bool = True

e = Employee('Alice', 5000.0)
print(e)

NamedTuple ve Veri Sınıfı Karşılaştırması

Aralarında seçim yaparken:

  • NamedTuple: değişmezdir, demet benzeridir, dizinlemeyi ve paket açmayı destekler.
  • veri sınıfı: varsayılan olarak değiştirilebilirdir (veya dondurulabilir), dizinlemeyi desteklemez ve daha fazla yapılandırma seçeneği sunar.
  • Demet davranışı önemliyse NamedTuple, daha zengin kayıtlar için veri sınıfı seçin.

İç İçe Kullanım ve Birleştirme

Adlandırılmış demetler birbirleriyle kolayca birleştirilebilir. Bir alan başka bir adlandırılmış demet olabilir ve yapılandırılmış, değişmez veriler oluşturulabilir.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

class Line(NamedTuple):
    start: Point
    end: Point

line = Line(Point(0, 0), Point(3, 4))
print(line.end.y)

İşlev Dönüş Türleri Olarak

Düzenleyicilerin sonucun alan türlerini bilmesi için bir işlevin dönüş türünü NamedTuple olarak belirtin. Belirtim, döndürülen kaydın biçimini belgeler.

from typing import NamedTuple

class Stats(NamedTuple):
    minimum: int
    maximum: int

def analyze(nums) -> Stats:
    return Stats(min(nums), max(nums))

r = analyze([5, 2, 8])
print(r.minimum, r.maximum)

Hızlı Kontrol

typing.NamedTuple kullanmanın collections.namedtuple fabrikasına göre bir avantajı nedir?

Özet

Adlandırılmış demetlere tür ipuçları eklemeyi öğrendiniz.

  • typing.NamedTuple sınıfından, alanları belirterek türetin.
  • Varsayılan değerleri satır içinde belirleyin; yöntemler ve özellikler ekleyin.
  • _replace, _asdict ve _fields yardımcıları hâlâ çalışır.
  • Okunabilirlik ve araç desteği için fabrika biçimi yerine bunu tercih edin.

Sıkça Sorulan Sorular

“typing.NamedTuple” dersi ücretsiz mi?

Evet — “typing.NamedTuple” 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.

“typing.NamedTuple” dersinde ne öğreneceğim?

Adlandırılmış demetlere tür ipuçları ekleyin 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.

“typing.NamedTuple” 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. Enum Sınıfı
  2. IntEnum ve Flag
  3. NamedTuple Temelleri
  4. typing.NamedTuple
← Python Academy Sayfasına Dön