Rumah >pembangunan bahagian belakang >Tutorial Python >Dinamakan Tuples dalam Python: apakah jenisnya?

Dinamakan Tuples dalam Python: apakah jenisnya?

DDD
DDDasal
2024-11-23 05:31:24823semak imbas

Named Tuples in Python: what type are they?

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:

  • P ialah kelas yang dijana secara dinamik oleh namedtuple.
  • Instance P ialah objek jenis Point yang juga subkelas tupel.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn