0Pricing
Python Academy · Pelajaran

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.NamedTuple dengan kolom yang diberi anotasi.
  • Tetapkan nilai bawaan secara langsung; tambahkan metode dan properti.
  • Metode pembantu _replace, _asdict, dan _fields tetap 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

  1. Kelas Enum
  2. IntEnum dan Flag
  3. Dasar-Dasar NamedTuple
  4. typing.NamedTuple
← Kembali ke Python Academy