Tuple bernama dalam Python ialah lanjutan daripada jenis data tupel terbina dalam, membolehkan anda memberikan nama yang bermakna kepada elemen tupel. Dalam erti kata lain, tupel bernama adalah tupel dengan atribut bernama. Hebat kan?
Ia adalah sebahagian daripada modul koleksi dan menyediakan cara untuk mentakrifkan kelasyang ringkas dan tidak boleh diubah dengan cara yang lebih mudah.
Tunggu apa, kelas?
Ya, kelas.
Tuple bernama pada asasnya ialah kelas yang tidak berubah.
Inilah keajaiban yang berlaku: apabila anda mencipta tuple bernama menggunakan namedtuple, hasilnya bukanlah contoh tuple itu sendiri, sebaliknya kelas yang dijana secara dinamik yang mewarisi daripada tuple. Sekali lagi, hebat!!
Mari kita lihat cara ini berfungsi.
from collections import namedtuple P = namedtuple("Point", "x y")
Apabila anda menjalankan P = namedtuple("Point", "x y"), anda sedang mencipta kelas baharu bernama Point (seperti yang dinyatakan dalam argumen pertama untuk namedtuple).
Fungsi namedtuple menggunakan jenis di sebalik tabir untuk mencipta kelas baharu bernama Point yang diwarisi daripada tupel secara dinamik. Kelas baharu ini disimpan dalam pembolehubah P.
Dan seperti kelas, jenisnya adalah jenis.
> type(P) class 'type'
> class A: pass > type(A) class 'type'
Dan apakah jenis contoh namatuple?
from collections import namedtuple P = namedtuple("Point", "x y") p = P(1,2) > print(type(p)) class '__main__.Point'
p ialah tika jenis Point. Tetapi ia juga tuple:
> print(isinstance(p, tuple)) True
Ringkasnya:
Dan satu perkara terakhir:
Adalah perkara biasa untuk menamakan pembolehubah bernamatuple (apa yang kami panggil P) dengan nama yang sama dengan nama jenis (apa yang kami panggil Point), kelas yang dicipta secara dinamik:
from collections import namedtuple Point = namedtuple("Point", "x y")
Saya menggunakan nama yang berbeza untuk menjelaskan perbezaan antara keduanya.
Atas ialah kandungan terperinci Dinamakan Tuples dalam Python: apakah jenisnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!