typing.NamedTuple
Tambahkan petunjuk tipe ke named tuple
typing.NamedTuple adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Alternatif Bertipe
Kelas dasar typing.NamedTuple adalah cara modern berbasis kelas untuk mendefinisikan tupel bernama. Kelas ini menambahkan petunjuk tipe dan tampil seperti kelas biasa, sehingga lebih mudah dipahami oleh sebagian besar editor dan pemeriksa tipe dibandingkan bentuk pabrik.
Sintaks Berbasis Kelas
Turunkan kelas dari NamedTuple dan nyatakan setiap kolom dengan anotasi tipe. Hasilnya tetap merupakan tupel sungguhan.
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int
p = Point(1, 2)
print(p)Perilaku Tupel yang Sama
Semua hal dari versi pabrik tetap berfungsi: akses berdasarkan nama, akses berdasarkan indeks, pembongkaran, dan sifat tidak dapat diubah.
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)Nilai Bawaan Secara Langsung
Berikan nilai bawaan pada sebuah kolom cukup dengan menetapkan nilai di dalam isi kelas. Kolom dengan nilai bawaan harus ditempatkan setelah kolom tanpa nilai bawaan.
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int
z: int = 0
print(Point(1, 2))
print(Point(1, 2, 9))Menambahkan Metode
Karena merupakan sebuah kelas, Anda dapat menambahkan metode sungguhan. Hal ini tidak dapat dilakukan dengan rapi oleh pabrik collections.namedtuple.
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())Properti Juga
Anda juga dapat mendefinisikan properti terhitung yang memperoleh nilainya dari kolom-kolom tersebut.
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)Metode Pembantu Tetap Tersedia
Metode pembantu tupel yang sudah dikenal tetap tersedia: _replace(), _asdict(), dan _fields semuanya bekerja dengan cara yang sama.
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int
p = Point(1, 2)
print(p._asdict())
print(p._replace(x=9))Petunjuk Tipe Mendokumentasikan Maksud
Anotasi tersebut tidak diberlakukan saat program berjalan, tetapi mendokumentasikan tipe yang diharapkan dan memungkinkan alat seperti mypy menemukan kesalahan sebelum Anda menjalankan program.
from typing import NamedTuple
class Employee(NamedTuple):
name: str
salary: float
active: bool = True
e = Employee('Alice', 5000.0)
print(e)NamedTuple vs Kelas Data
Memilih di antara keduanya:
- NamedTuple: tidak dapat diubah, menyerupai tupel, serta mendukung pengindeksan dan pembongkaran.
- kelas data: secara bawaan dapat diubah (atau dibekukan), tidak mendukung pengindeksan, dan memiliki lebih banyak opsi konfigurasi.
- Pilih NamedTuple ketika perilaku tupel penting; pilih kelas data untuk rekaman yang lebih kaya.
Penyarangan dan Komposisi
Tupel bernama dapat dikomposisikan dengan baik. Sebuah kolom dapat berupa tupel bernama lain, sehingga membentuk data terstruktur yang tidak dapat diubah.
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)Sebagai Tipe Kembalian Fungsi
Beri anotasi pada fungsi agar mengembalikan NamedTuple Anda sehingga editor mengetahui tipe kolom dari hasilnya. Anotasi tersebut mendokumentasikan bentuk rekaman yang dikembalikan.
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)Uji Cepat
Apa keunggulan typing.NamedTuple dibandingkan pabrik collections.namedtuple?
Ringkasan
Anda telah mempelajari cara menambahkan petunjuk tipe ke tupel bernama.
- Turunkan
typing.NamedTupledengan kolom yang diberi anotasi. - Tetapkan nilai bawaan secara langsung; tambahkan metode dan properti.
- Metode pembantu
_replace,_asdict, dan_fieldstetap berfungsi. - Utamakan cara ini dibandingkan pabrik karena lebih mudah dibaca dan lebih baik didukung alat pengembangan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “typing.NamedTuple” gratis?
Ya — teks lengkap “typing.NamedTuple” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “typing.NamedTuple”?
Tambahkan petunjuk tipe ke named tuple Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “typing.NamedTuple” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Kelas Enum
- IntEnum dan Flag
- Dasar-Dasar NamedTuple
- typing.NamedTuple