


Dalam Python, __getitem__ dan __setitem__ bermaksud:
Pernahkah anda mempertimbangkan bagaimana kaedah sihir Python menjadikan kehidupan kita sebagai pengaturcara lebih mudah, hampir seperti kita mempunyai rakan yang membantu membimbing kita dalam laluan? Dalam artikel ini, kami akan meneroka kaedah ajaib Python getitem dan setitem, menyahmistikannya dan mempelajari cara kaedah ini boleh membantu kami menulis kod yang lebih ekspresif dan berperikemanusiaan. Mari mulakan!
Fahami kaedah ajaib
Kaedah ajaib, juga dikenali sebagai kaedah "double-underscore" (disingkatkan sebagai kaedah "dunder"), ialah kaedah khas dalam kelas Python yang mempunyai garis bawah berganda pada permulaan dan akhir. Mereka membenarkan kami menentukan cara kelas berkelakuan dalam situasi tertentu, seperti apabila kami ingin mengakses atau mengubah suai elemen mereka. Dua daripada kaedah ajaib ialah getitem dan setitem, yang mentakrifkan cara untuk mendapatkan dan mengubah suai elemen kelas tersuai.
Keajaiban getitem
Kaedah sihir getitem membolehkan kami menggunakan notasi kurungan segi empat sama untuk menentukan cara mengakses elemen kelas tersuai, sama seperti kami menggunakan senarai, kamus atau objek Python terbina dalam yang lain. Apabila kita mentakrifkan kelas dengan kaedah getitem, kita boleh mengakses elemennya menggunakan sintaks biasa -
element = my_instance[index]
Ini ialah contoh kelas tersuai mudah MyList yang menyerupai senarai asas menggunakan kaedah sihir getitem -
Langkah 1− Takrifkan kelas yang dipanggil MyList yang mempunyai pembina (__init__) yang menerima senarai sebagai input dan memberikannya atribut data.
Langkah 2− Laksanakan kaedah ajaib __getitem__, yang menerima indeks sebagai parameter dan mengembalikan elemen pada indeks yang diberikan daripada atribut data.
Langkah 3−Buat contoh MyList yang mengandungi senarai nombor dari 1 hingga 5.
Langkah 4 − Cetak elemen dengan indeks 1 menggunakan tatatanda kurungan segi empat sama. Keluaran akan menjadi 2.
Terjemahan bahasa Cina bagiContoh
ialah:Contoh
class MyList: def __init__(self, data): self.data = data def __getitem__(self, index): return self.data[index] my_list = MyList([1, 2, 3, 4, 5]) print(my_list[1])
Output
2
Pesona Setitem
Sekarang kita telah meneroka getitem, mari kita lihat rakan sejawatannya, setitem. Kaedah sihir setitem membolehkan kami mentakrifkan cara mengubah suai elemen kelas tersuai menggunakan tatatanda kurungan segi empat sama. Apabila kita mentakrifkan kelas dengan kaedah setitem, kita boleh mengubah suai elemennya seperti ini -
my_instance[index] = new_value
Mari panjangkan contoh MyList kami yang terdahulu untuk memasukkan kaedah sihir setitem -
Langkah 1− Terangkan kelas MyList dengan pembina (__init__) yang menerima senarai sebagai input dan menyimpannya dalam atribut data.
Langkah 2−Laksanakan kaedah ajaib __getitem__, yang menerima indeks sebagai parameter dan mengembalikan butiran ciri data pada indeks yang diberikan.
Langkah 3− Laksanakan kaedah ajaib __setitem__, yang menerima indeks dan harga sebagai parameter dan mengurangkan kos item dalam atribut data pada indeks yang diberikan.
Langkah 4 − Buat instance MyList menggunakan nombor 1 hingga 4.
Langkah 5 − Cetak elemen dengan indeks 1 menggunakan tatatanda kurungan segi empat sama. Keluaran akan menjadi 2.
Langkah 6 − Ubah suai elemen dengan indeks 1 kepada nilai baharu (42) dengan menggunakan tatatanda kurungan segi empat sama. Kaedah __setitem__ akan mengendalikan pengubahsuaian.
Langkah 7 − Cetak elemen dengan indeks 1 sekali lagi menggunakan tatatanda kurungan segi empat sama. Disebabkan oleh pengubahsuaian dalam langkah 6, output kini akan menjadi 42.
Example
的中文翻译为:示例
class MyList: def __init__(self, data): self.data = data def __getitem__(self, index): return self.data[index] def __setitem__(self, index, value): self.data[index] = value my_list = MyList([1, 2, 3, 4, 5]) print(my_list[1]) # Output: 2 my_list[1] = 42 print(my_list[1])
输出
2 42
使用Getitem和Setitem的最佳实践
现在我们了解了getitem和setitem的魔法,让我们回顾一些使用这些方法创建更人性化代码的最佳实践 -
使您的代码直观 − 在使用getitem和setitem时,目标是使其行为直观,类似于内置的Python对象,如列表、字典或数组。这将使您的自定义类更易于理解和接近。
优雅地处理边界情况 − 要准备好处理边界情况,例如无效的索引或键。您可以引发适当的异常,如无效索引的IndexError或无效键的KeyError,以通知用户有关问题。
使用清晰的变量名 − 在定义getitem和setitem方法时,使用清晰且描述性强的变量名作为索引和值。这将使您的代码更易读且更易管理。
不要忘记切片 − 在您的getitem和setitem方法中考虑支持切片操作,使您的自定义类更加灵活和方便使用。
保持一致 − 如果您的类同时实现了getitem和setitem,请确保它们的行为保持一致。例如,如果您的getitem方法支持负索引,那么您的setitem方法也应该支持。
结论
在本文中,我们探索了getitem和setitem魔术方法的神奇世界。这些强大的工具使我们能够创建具有直观和熟悉行为的自定义类,模仿内置的Python对象,使我们的代码更具表达力和人性化。
通过遵循我们讨论过的最佳实践,您将能够利用getitem和setitem的功能来创建自定义类,使其对其他程序员来说感觉自然而然,促进协作和理解。所以,请继续在您的Python项目中传播getitem和setitem的魔力,创建既迷人又功能强大的代码。祝您编码愉快!
Atas ialah kandungan terperinci Dalam Python, __getitem__ dan __setitem__ bermaksud:. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Di Python, bagaimana untuk membuat objek secara dinamik melalui rentetan dan panggil kaedahnya? Ini adalah keperluan pengaturcaraan yang biasa, terutamanya jika perlu dikonfigurasikan atau dijalankan ...

Artikel ini membincangkan perpustakaan Python yang popular seperti Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask, dan Permintaan, memperincikan kegunaan mereka dalam pengkomputeran saintifik, analisis data, visualisasi, pembelajaran mesin, pembangunan web, dan h

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Fastapi ...
