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.NamedTuplesınıfından, alanları belirterek türetin.- Varsayılan değerleri satır içinde belirleyin; yöntemler ve özellikler ekleyin.
_replace,_asdictve_fieldsyardı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
- Enum Sınıfı
- IntEnum ve Flag
- NamedTuple Temelleri
- typing.NamedTuple