ADVERTISEMENT
  • Trang chủ
  • Tin Tức
  • Liên hệ
Thứ Hai, Tháng Sáu 5, 2023
Tin Tức Giáo Dục Học Tập Tiny
No Result
View All Result
  • Giáo Án
  • Học Tập
    • Lớp 1
    • Lớp 2
    • Lớp 3
    • Lớp 4
    • Lớp 5
    • Lớp 6
    • Lớp 7
    • Lớp 8
    • Lớp 9
    • Lớp 10
    • Lớp 11
    • Lớp 12
  • Sách Tham Khảo
    • Sách Tham Khảo Lớp 1
    • Sách Tham Khảo Lớp 2
    • Sách Tham Khảo Lớp 3
    • Sách Tham Khảo Lớp 4
    • Sách Tham Khảo Lớp 5
    • Sách Tham Khảo Lớp 6
    • Sách Tham Khảo Lớp 7
    • Sách Tham Khảo Lớp 8
    • Sách Tham Khảo Lớp 9
    • Sách Tham Khảo Lớp 10
    • Sách Tham Khảo Lớp 11
    • Sách Tham Khảo Lớp 12
  • Ôn Thi
    • Thi THPT Quốc Gia
    • Địa Lý
    • Giáo Dục Công Dân
    • Hóa Học
    • Lịch Sử
    • Ngoại Ngữ
    • Ngữ Văn
    • Sinh Học
    • Vật Lý
    • Toán Học
  • Sách Kinh Tế
  • Sách Ngoại Ngữ
    • Tiếng Nhật
    • Tiếng Pháp
    • Tiếng Trung
  • Biểu mẫu
    • Giáo dục – Đào tạo
  • Sách Văn Học
  • Sách Y Học
  • Tài Liệu
    • Thủ tục hành chính
    • Việc làm – Nhân sự
    • Y học
    • Bộ đội – Quốc phòng – Thương binh
    • Doanh nghiệp
    • Giáo dục – Đào tạo
    • Giao thông vận tải
    • Hôn nhân – Gia đình
    • Quyền Dân sự
    • Tin Tức
  • Tâm Lý & Kỹ Năng
  • Giáo Án
  • Học Tập
    • Lớp 1
    • Lớp 2
    • Lớp 3
    • Lớp 4
    • Lớp 5
    • Lớp 6
    • Lớp 7
    • Lớp 8
    • Lớp 9
    • Lớp 10
    • Lớp 11
    • Lớp 12
  • Sách Tham Khảo
    • Sách Tham Khảo Lớp 1
    • Sách Tham Khảo Lớp 2
    • Sách Tham Khảo Lớp 3
    • Sách Tham Khảo Lớp 4
    • Sách Tham Khảo Lớp 5
    • Sách Tham Khảo Lớp 6
    • Sách Tham Khảo Lớp 7
    • Sách Tham Khảo Lớp 8
    • Sách Tham Khảo Lớp 9
    • Sách Tham Khảo Lớp 10
    • Sách Tham Khảo Lớp 11
    • Sách Tham Khảo Lớp 12
  • Ôn Thi
    • Thi THPT Quốc Gia
    • Địa Lý
    • Giáo Dục Công Dân
    • Hóa Học
    • Lịch Sử
    • Ngoại Ngữ
    • Ngữ Văn
    • Sinh Học
    • Vật Lý
    • Toán Học
  • Sách Kinh Tế
  • Sách Ngoại Ngữ
    • Tiếng Nhật
    • Tiếng Pháp
    • Tiếng Trung
  • Biểu mẫu
    • Giáo dục – Đào tạo
  • Sách Văn Học
  • Sách Y Học
  • Tài Liệu
    • Thủ tục hành chính
    • Việc làm – Nhân sự
    • Y học
    • Bộ đội – Quốc phòng – Thương binh
    • Doanh nghiệp
    • Giáo dục – Đào tạo
    • Giao thông vận tải
    • Hôn nhân – Gia đình
    • Quyền Dân sự
    • Tin Tức
  • Tâm Lý & Kỹ Năng
No Result
View All Result
Tin Tức Giáo Dục Học Tập Tiny
No Result
View All Result
ADVERTISEMENT

Trang chủ » Blog » Hướng dẫn dùng get item python

Hướng dẫn dùng get item python

Sam Van by Sam Van
30 Tháng Mười, 2022
in Blog
0
Hướng dẫn dùng get item python
ADVERTISEMENT
ADVERTISEMENT
7 hinh anh binh luan facebook hai huoc hay nhất hiện nay

Tôi sử dụng python3.7 và đối với một số ứng dụng, hãy tạo một lớp kế thừa từ a dict, nhưng gặp sự cố khi triển khai items()và values()các phương pháp để làm cho nó hoạt động chính xác. Lớp này ghi đè nhiều phương thức, nhưng ở đây tôi đã đặt một ví dụ rất đơn giản chỉ để minh họa vấn đề chính xác:

Có thể bạn quan tâm
  • Tính năng Báo xấu trên Zalo là gì? Dùng để làm gì? Hướng dẫn cách báo 417
  • 5 ý nghĩa tên minh thư tốt nhất
  • 5 serious nghĩa là gì hot nhất
  • trifeling là gì – Nghĩa của từ trifeling
  • Top truyện cổ tích nước ngoài

Nội dung chính

Bạn Đang Xem: Hướng dẫn dùng get item python

  • Python: Triển khai cắt trong __getitem__?
  • Làm thế nào để xác định lớp getitem để xử lý cả chỉ mục đơn giản và cắt?
  • Python 2, lưu ý:
  • Đăng nhập để trả lời câu hỏi
  • Có thể bạn quan tâm
class MyFunction:
    def __call__(self):
        return 5

class MyDict(dict):
    def __getitem__(self, key):
        item = super().__getitem__(key)
        if isinstance(item, MyFunction):
            return item()
        else:
            return item

    def get(self, key, default=None):
        if self.__contains__(key):
            return self.__getitem__(key)
        if isinstance(default, MyFunction):
            return default()
        return default

    # def __copy__(self):
    #     return type(self)(self)
    # 
    # def copy(self):
    #     return self.__copy__()

    # def __iter__(self):
    #     return super().__iter__()


d = MyDict(a=MyFunction(), b=3)

Tôi muốn hơn là tôi nhận được một giá trị theo các trường hợp chính của
MyFunctionđược gọi. Điều này hoạt động tốt:

for k in d:
    print(k, d[k])

và in ra kết quả mong đợi:

a 5
b 3

Nhưng hai điều này không:

for v in d.values():
    print(v)

for k, v in d.items():
    print(k, v)

Họ in repr của hàm.

Làm cách nào tôi có thể gọi cho họ __getitem__?

Lưu ý : Nó có thể là một số loại dicttối ưu hóa lớp tích hợp (tôi không muốn kế thừa dạng UserDicthoặc Mapping). Ví dụ nếu tôi bỏ ghi chú:

def  __iter__(self):
     return super().__iter__()

Các cuộc gọi:

new_d = d.copy()
new_d = dict(d)
new_d = dict(**d)

sẽ gọi __getitem__

4 hữu ích 4
bình luận 1.1k xem chia sẻ

Xem Tắt

Python: Triển khai cắt trong __getitem__?

Tôi đang cố gắng thực hiện chức năng cắt lát cho một lớp tôi đang tạo để tạo ra một biểu diễn vector.

Tôi có mã này cho đến nay, mà tôi tin rằng sẽ thực hiện đúng lát cắt nhưng bất cứ khi nào tôi thực hiện một cuộc gọi như v[4]v là một python vector trả về lỗi về
việc không có đủ tham số. Vì vậy, tôi đang cố gắng tìm ra cách xác định getitemphương thức đặc biệt trong lớp để xử lý cả chỉ mục đơn giản và cắt.

def __getitem__(self, start, stop, step):
    index = start
    if stop == None:
        end = start + 1
    else:
        end = stop
    if step == None:
        stride = 1
    else:
        stride = step
    return self.__data[index:end:stride]
  • python
  • slice
  • python-datamodel

88 hữu ích 0 bình luận 50k xem chia sẻ

answer

Xem Thêm : Tổng hợp 6 điều kiện tạo ra hồ quang điện hot nhất

102

Hướng dẫn dùng get item python

Các __getitem__()phương pháp sẽ nhận được một sliceđối tượng khi đối tượng được thái lát. Đơn giản chỉ cần nhìn vào start, stopvà stepcác
thành viên của sliceđối tượng để có được các thành phần cho một slice.

>>> class C(object):
...   def __getitem__(self, val):
...     print val
... 
>>> c = C()
>>> c[3]
3
>>> c[3:4]
slice(3, 4, None)
>>> c[3:4:-2]
slice(3, 4, -2)
>>> c[():1j:'a']
slice((), 1j, 'a')

102 hữu ích 5 bình luận chia sẻ

answer

59

Tôi có một danh sách “tổng hợp” (một danh sách mà dữ liệu lớn hơn bạn muốn tạo trong bộ nhớ) và tôi __getitem__trông như thế này:

def __getitem__( self, key ) :
    if isinstance( key, slice ) :
        #Get the start, stop, and step from the slice
        return [self[ii] for ii in xrange(*key.indices(len(self)))]
    elif isinstance( key, int ) :
        if key < 0 : #Handle negative indices
            key += len( self )
        if key < 0 or key >= len( self ) :
            raise IndexError, "The index (%d) is out of range."%key
        return self.getData(key) #Get the data from elsewhere
    else:
        raise TypeError, "Invalid argument type."

Các lát cắt không
trả về cùng loại, điều này là không, nhưng nó hoạt động với tôi.

59 hữu ích 2 bình luận chia sẻ

answer

10

Làm thế nào để
xác định lớp getitem để xử lý cả chỉ mục đơn giản và cắt?

Các đối tượng lát được tự động tạo khi bạn sử dụng dấu hai chấm trong ký hiệu đăng ký – và đó là những gì được truyền vào __getitem__. Sử dụng isinstanceđể kiểm tra nếu bạn có một đối tượng lát:

from __future__ import print_function

class Sliceable(object):

    def __getitem__(self, given):
        if isinstance(given, slice):
            # do your handling for a slice object:
            print(given.start, given.stop, given.step)
        else:
            # Do your handling for a plain index
            print(given)

Ví dụ sử dụng:

>>> sliceme = Sliceable()
>>> sliceme[1]
1
>>> sliceme[2]
2
>>> sliceme[:]
None None None
>>> sliceme[1:]
1 None None
>>> sliceme[1:2]
1 2 None
>>> sliceme[1:2:3]
1 2 3
>>> sliceme[:2:3]
None 2 3
>>> sliceme[::3]
None None 3
>>> sliceme[::]
None None None
>>> sliceme[:]
None None None

Python
2, lưu ý:

Trong Python 2, có một phương thức không dùng nữa mà bạn có thể cần ghi đè khi phân lớp một số loại dựng sẵn.

Từ tài liệu datamodel :

Xem Thêm : 7 hinh anh binh luan facebook hai huoc hay nhất hiện nay

object.__getslice__(self, i, j)

Không dùng nữa kể từ phiên bản 2.0: Hỗ trợ các đối tượng lát làm tham số cho __getitem__()phương thức. (Tuy nhiên,
các loại tích hợp trong CPython hiện vẫn đang triển khai __getslice__(). Do đó, bạn phải ghi đè nó trong các lớp dẫn xuất khi triển khai cắt.)

Điều này đã biến mất trong Python 3.

10 hữu ích 1 bình luận chia sẻ

answer

7

7 hữu ích 0 bình luận chia sẻ

answer

6

Để mở rộng câu trả lời của Aaron, đối với những thứ như numpy, bạn có thể thực hiện cắt đa chiều bằng cách kiểm tra xem liệu givencó phải là tuple:

class Sliceable(object):
    def __getitem__(self, given):
        if isinstance(given, slice):
            # do your handling for a slice object:
            print("slice", given.start, given.stop, given.step)
        elif isinstance(given, tuple):
            print("multidim", given)
        else:
            # Do your handling for a plain index
            print("plain", given)

sliceme = Sliceable()
sliceme[1]
sliceme[::]
sliceme[1:, ::2]

“ `

Đầu ra:

('plain', 1)
('slice', None, None, None)
('multidim', (slice(1, None, None), slice(None, None, 2)))

6 hữu ích 1 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Nguồn: https://quatangtiny.com
Danh mục: Blog

Liên Quan:

Cách qua môn triết học mác – lêninCách qua môn triết học mác – lênin Viết chương trình nhập vào một số nguyên có 2 chữ số in ra chữ số hàng chục và hàng đơn vị PythonViết chương trình nhập vào một số nguyên có 2 chữ số in ra chữ số hàng chục và hàng đơn vị Python Giải bài tập Toán 7 Ôn tập chương IGiải bài tập Toán 7 Ôn tập chương I Bách gia chư tử là gìBách gia chư tử là gì
Tags: Hướng dẫn dùng get item python
ADVERTISEMENT
Previous Post

Văn mẫu lớp 9: Phân tích tình mẫu tử trong bài Mây và sóng của Ta-go

Next Post

Văn mẫu lớp 9: Đoạn văn cảm nhận về tình mẫu tử qua bài Mây và sóng

Related Posts

9 tải blockman go hack full kim cương hay nhất, đừng bỏ qua
Blog

9 tải blockman go hack full kim cương hay nhất, đừng bỏ qua

5 Tháng Sáu, 2023
Top 5 năng lượng ánh sáng hot nhất
Blog

Top 5 năng lượng ánh sáng hot nhất

5 Tháng Sáu, 2023
5 hàm between trong excel hay nhất
Blog

5 hàm between trong excel hay nhất

5 Tháng Sáu, 2023
5 mặt nạ ngủ laneige thật và giả tốt nhất
Blog

5 mặt nạ ngủ laneige thật và giả tốt nhất

5 Tháng Sáu, 2023
Tổng hợp 7 chất thuộc loại polisaccarit là hot nhất
Blog

Tổng hợp 7 chất thuộc loại polisaccarit là hot nhất

5 Tháng Sáu, 2023
5 cái răng cái tóc là góc con người hay nhất, đừng bỏ lỡ
Blog

5 cái răng cái tóc là góc con người hay nhất, đừng bỏ lỡ

5 Tháng Sáu, 2023
Next Post
Văn mẫu lớp 9: Đoạn văn cảm nhận về tình mẫu tử qua bài Mây và sóng

Văn mẫu lớp 9: Đoạn văn cảm nhận về tình mẫu tử qua bài Mây và sóng

Bài Viết Mới

9 tải blockman go hack full kim cương hay nhất, đừng bỏ qua
Blog

9 tải blockman go hack full kim cương hay nhất, đừng bỏ qua

by Tiny Edu
5 Tháng Sáu, 2023
0

Duới đây là các thông tin và kiến thức về tải blockman go hack full kim cương hay nhất và...

Read more
Top 5 năng lượng ánh sáng hot nhất

Top 5 năng lượng ánh sáng hot nhất

5 Tháng Sáu, 2023
Top 6 những chất không tác dụng với hcl tốt nhất

Top 6 những chất không tác dụng với hcl tốt nhất

5 Tháng Sáu, 2023
Tuổi trẻ TPHCM thực hiện nhiều công trình trọng điểm kỷ niệm 30

Tuổi trẻ TPHCM thực hiện nhiều công trình trọng điểm kỷ niệm 30

5 Tháng Sáu, 2023
5 hàm between trong excel hay nhất

5 hàm between trong excel hay nhất

5 Tháng Sáu, 2023
6 sau always usually hay nhất, đừng bỏ lỡ

6 sau always usually hay nhất, đừng bỏ lỡ

5 Tháng Sáu, 2023
Tổng hợp 8 dịch my love hay nhất

Tổng hợp 8 dịch my love hay nhất

5 Tháng Sáu, 2023
4 những bài thơ hay nhất về bác hồ tốt nhất hiện nay

4 những bài thơ hay nhất về bác hồ tốt nhất hiện nay

5 Tháng Sáu, 2023
5 mặt nạ ngủ laneige thật và giả tốt nhất

5 mặt nạ ngủ laneige thật và giả tốt nhất

5 Tháng Sáu, 2023
Tổng hợp 7 chất thuộc loại polisaccarit là hot nhất

Tổng hợp 7 chất thuộc loại polisaccarit là hot nhất

5 Tháng Sáu, 2023

Phản hồi gần đây

  • Tả cây cam mà em yêu thích (Dàn ý + 7 mẫu) - Tài Liệu Miễn Phí trong Tả một loại cây ăn quả mà em thích (Dàn ý + 70 Mẫu)
  • Mẫu vở luyện viết chữ đẹp - Tài Liệu Miễn Phí trong Mẫu giấy 4 ô ly
  • Bộ đề thi thử vào lớp 10 môn tiếng Anh năm 2018 - 2019 - Tài Liệu Miễn Phí trong Bộ đề thi thử vào lớp 10 môn Toán năm 2018 – 2019
  • Đề thi thử THPT Quốc gia năm 2017 môn Địa lý trường THPT Đoàn Thượng, Hải Dương (Lần 1) - Tài Liệu Miễn Phí trong Đề thi thử THPT Quốc gia năm 2017 môn Địa lý trường THPT Lý Thái Tổ, Bắc Ninh (Lần 1)
  • Đoạn văn tiếng Anh về môn thể thao yêu thích (8 mẫu) - Tài Liệu Miễn Phí trong Đoạn văn tiếng Anh về ngày Tết
ADVERTISEMENT
  • Trang chủ
  • Tin Tức
  • Liên hệ
HOME - TRANG CHU

© 2021 Copyright - Quà Tặng Tiny

No Result
View All Result
  • Giáo Án
  • Học Tập
    • Lớp 1
    • Lớp 2
    • Lớp 3
    • Lớp 4
    • Lớp 5
    • Lớp 6
    • Lớp 7
    • Lớp 8
    • Lớp 9
    • Lớp 10
    • Lớp 11
    • Lớp 12
  • Sách Tham Khảo
    • Sách Tham Khảo Lớp 1
    • Sách Tham Khảo Lớp 2
    • Sách Tham Khảo Lớp 3
    • Sách Tham Khảo Lớp 4
    • Sách Tham Khảo Lớp 5
    • Sách Tham Khảo Lớp 6
    • Sách Tham Khảo Lớp 7
    • Sách Tham Khảo Lớp 8
    • Sách Tham Khảo Lớp 9
    • Sách Tham Khảo Lớp 10
    • Sách Tham Khảo Lớp 11
    • Sách Tham Khảo Lớp 12
  • Ôn Thi
    • Thi THPT Quốc Gia
    • Địa Lý
    • Giáo Dục Công Dân
    • Hóa Học
    • Lịch Sử
    • Ngoại Ngữ
    • Ngữ Văn
    • Sinh Học
    • Vật Lý
    • Toán Học
  • Sách Kinh Tế
  • Sách Ngoại Ngữ
    • Tiếng Nhật
    • Tiếng Pháp
    • Tiếng Trung
  • Biểu mẫu
    • Giáo dục – Đào tạo
  • Sách Văn Học
  • Sách Y Học
  • Tài Liệu
    • Thủ tục hành chính
    • Việc làm – Nhân sự
    • Y học
    • Bộ đội – Quốc phòng – Thương binh
    • Doanh nghiệp
    • Giáo dục – Đào tạo
    • Giao thông vận tải
    • Hôn nhân – Gia đình
    • Quyền Dân sự
    • Tin Tức
  • Tâm Lý & Kỹ Năng

© 2021 Copyright - Quà Tặng Tiny