Hình ảnh của Tác giả
Python là một ngôn ngữ kỳ diệu với nhiều khái niệm mà ngay cả người dùng cao cấp cũng có thể không quen thuộc. Phương pháp Dunder hoặc Magical là một trong số đó. Phương pháp ma thuật là phương pháp đặc biệt được bao quanh bởi dấu gạch dưới kép. Chúng không được gọi một cách rõ ràng không giống như các phương thức thông thường trong python. Một phương pháp ma thuật như vậy là __getitem__
phương thức, cho phép các đối tượng Python hoạt động giống như các chuỗi hoặc vùng chứa, ví dụ như danh sách, từ điển và bộ dữ liệu. Nó lấy chỉ mục hoặc lát cắt và truy xuất giá trị liên quan của nó từ bộ sưu tập. Nó được gọi tự động bất cứ khi nào chúng ta sử dụng indexer [ ]
toán tử để truy cập các phần tử trong đối tượng của bạn.
Hãy coi phương pháp này như một cây đũa thần cho phép bạn trích xuất thông tin cần thiết chỉ bằng cách viết một vài dòng mã. Thú vị phải không? Phương pháp này cũng được sử dụng rộng rãi trong phân tích dữ liệu và học máy. Vì vậy, hãy đi sâu hơn vào __getitem__
phương pháp và khám phá sức mạnh và tính linh hoạt của nó.
Tôi muốn bạn hiểu rằng nhiệm vụ của bạn với tư cách là một lập trình viên Python không chỉ là viết mã chức năng. Mã của bạn phải hiệu quả, dễ đọc và có thể bảo trì. sử dụng __getitem__
sẽ giúp bạn đạt được những mục tiêu này. Dưới đây là một số lợi ích khác của việc sử dụng phương pháp kỳ diệu này:
- Giảm mức sử dụng bộ nhớ bằng cách cho phép bạn chỉ trích xuất thông tin cần thiết thay vì tải toàn bộ cấu trúc dữ liệu vào bộ nhớ
- Cung cấp tính linh hoạt cao hơn trong cách dữ liệu được xử lý và thao tác
- Cho phép bạn lặp lại bộ sưu tập mà không cần lặp lại dữ liệu
- Nâng cao chức năng bằng cách cho phép bạn viết chỉ mục nâng cao có thể không thực hiện được với các loại tích hợp sẵn
- Đơn giản hóa mã vì nó sử dụng ký hiệu quen thuộc
Cú pháp cho __getitem__
như sau:
def __getitem__(self, index): # Your Implementation pass
Nó xác định hành vi của hàm và lấy chỉ mục mà bạn đang cố truy cập trong tham số của nó. Chúng ta có thể sử dụng phương pháp này như thế này:
my_obj[index]
Điều này chuyển thành tuyên bố my_obj.__getitem__(index)
dưới mui xe. Bây giờ bạn có thể nghĩ rằng nó khác với tích hợp như thế nào indexer []
nhà điều hành? Bất cứ nơi nào bạn sử dụng ký hiệu này, python sẽ tự động gọi __getitem__
phương thức cho bạn và là cách viết tắt để truy cập các phần tử. Nhưng nếu bạn muốn thay đổi hành vi lập chỉ mục cho các đối tượng tùy chỉnh, bạn cần gọi rõ ràng __getitem__
phương pháp.
Ví dụ 01
Trước tiên chúng ta hãy bắt đầu với một ví dụ đơn giản. Chúng tôi sẽ tạo một lớp Sinh viên sẽ có danh sách tất cả các sinh viên và chúng tôi có thể truy cập chúng theo chỉ mục và xem xét rằng chỉ mục đó đại diện cho ID sinh viên duy nhất của họ.
class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])
Đầu ra:
Bây giờ chúng ta sẽ chuyển sang một ví dụ nâng cao nơi chúng ta sẽ thay đổi hành vi lập chỉ mục bằng cách sử dụng __getitem__
phương pháp. Giả sử rằng tôi có một danh sách các phần tử chuỗi và tôi muốn truy xuất phần tử bất cứ khi nào tôi nhập vị trí chỉ mục của nó và tôi cũng có thể lấy vị trí chỉ mục nếu tôi nhập chính chuỗi đó.
class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green'])
Đầu ra:
red
green
0 2
Phương pháp này cực kỳ hữu ích để tra cứu nhanh các thuộc tính của cá thể. Xem xét tính linh hoạt và tính linh hoạt của phương pháp này, tôi có thể nói đây là một trong những phương pháp ma thuật được sử dụng ít nhất của Python. Tôi hy vọng bạn thích đọc bài viết này và hãy cho tôi biết trong phần bình luận nếu bạn muốn biết về các phương thức kỳ diệu khác trong Python.
Kanwal Mehreen là một nhà phát triển phần mềm đầy tham vọng, rất quan tâm đến khoa học dữ liệu và các ứng dụng của AI trong y học. Kanwal đã được chọn là Google Generation Scholar 2022 cho khu vực APAC. Kanwal thích chia sẻ kiến thức kỹ thuật bằng cách viết các bài báo về các chủ đề thịnh hành và đam mê cải thiện sự đại diện của phụ nữ trong ngành công nghệ.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. Truy cập Tại đây.
- nguồn: https://www.kdnuggets.com/2023/03/introduction-getitem-magic-method-python.html?utm_source=rss&utm_medium=rss&utm_campaign=introduction-to-__getitem__-a-magic-method-in-python
- :là
- 2022
- 8
- a
- Giới thiệu
- truy cập
- truy cập
- Đạt được
- tiên tiến
- AI
- AI trong y học
- Tất cả
- Cho phép
- phân tích
- và
- APAC
- các ứng dụng
- LÀ
- đối số
- bài viết
- bài viết
- AS
- thuốc cam
- liên kết
- thuộc tính
- tự động
- BE
- Lợi ích
- Đen
- Màu xanh da trời
- được xây dựng trong
- by
- cuộc gọi
- gọi là
- Cuộc gọi
- CAN
- thay đổi
- tốt nghiệp lớp XNUMX
- mã
- bộ sưu tập
- bình luận
- hoàn thành
- khái niệm
- Hãy xem xét
- xem xét
- Container
- tạo
- khách hàng
- dữ liệu
- phân tích dữ liệu
- khoa học dữ liệu
- David
- sâu sắc hơn
- Xác định
- Nhà phát triển
- khác nhau
- khám phá
- tăng gấp đôi
- e
- dễ dàng
- hiệu quả
- thành phần
- các yếu tố
- cho phép
- đăng ký hạng mục thi
- thiết yếu
- Ngay cả
- ví dụ
- trích xuất
- cực kỳ
- quen
- vài
- Tên
- Linh hoạt
- sau
- Trong
- từ
- chức năng
- chức năng
- chức năng
- thế hệ
- được
- Các mục tiêu
- tài trợ
- lớn hơn
- màu xanh lá
- xử lý
- Có
- giúp đỡ
- tại đây
- mui xe
- mong
- Độ đáng tin của
- HTTPS
- i
- ID
- thực hiện
- cải thiện
- in
- chỉ số
- ngành công nghiệp
- thông tin
- ví dụ
- thay vì
- quan tâm
- quan tâm
- thú vị
- Giới thiệu
- IT
- mặt hàng
- ITS
- chính nó
- Xe đẩy
- Keen
- phím
- Biết
- kiến thức
- Ngôn ngữ
- học tập
- Lượt thích
- dòng
- Danh sách
- Chức năng
- tải
- tra cứu
- máy
- học máy
- ma thuật
- Có thể bảo trì
- thao tác
- nhiều
- y học
- Bộ nhớ
- phương pháp
- phương pháp
- Might
- chi tiết
- hầu hết
- di chuyển
- tên
- Cần
- vật
- đối tượng
- of
- on
- ONE
- nhà điều hành
- bình thường
- Nền tảng khác
- tham số
- đam mê
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- vị trí
- có thể
- quyền lực
- Lập trình viên
- Python
- Nhanh chóng
- nâng cao
- Reading
- đỏ
- khu
- đại diện
- đại diện cho
- cần phải
- trở lại
- s
- Khoa học
- Phần
- chọn
- TỰ
- Chia sẻ
- tốc ký
- nên
- Slice
- So
- Phần mềm
- một số
- đặc biệt
- Bắt đầu
- Tuyên bố
- cấu trúc
- Sinh viên
- Sinh viên
- như vậy
- bao quanh
- cú pháp
- mất
- công nghệ cao
- công nghiệp công nghệ
- Kỹ thuật
- việc này
- Sản phẩm
- cung cấp their dịch
- Them
- Kia là
- Hãy suy nghĩ
- đến
- Chủ đề
- xu hướng
- loại
- Dưới
- hiểu
- độc đáo
- us
- Sử dụng
- sử dụng
- Người sử dụng
- giá trị
- đũa phép
- rộng rãi
- sẽ
- với
- ở trong
- không có
- Dành cho Nữ
- phụ nữ trong công nghệ
- sẽ
- viết
- viết
- trên màn hình
- zephyrnet