Mỗi đối tượng Python thuộc một loại nhất định, còn được gọi là “lớp”. Lớp là một bản thiết kế hiển thị dữ liệu và khả năng của từng đối tượng/thực thể được tạo sau bản thiết kế này
Đưa ra một đối tượng Python [=instance]. Làm cách nào để xác định/kiểm tra/lấy loại của nó [= lớp]?
Có nhiều biến thể của câu hỏi này
- Làm thế nào để xác định loại đối tượng?
- Làm cách nào để kiểm tra loại phiên bản?
- Làm thế nào để có được lớp của một đối tượng?
- Làm cách nào để kiểm tra lớp của một thể hiện?
Hãy bắt đầu với một tổng quan ngắn về cách bạn có thể trả lời tất cả những câu hỏi đó theo cách Pythonic nhất
Tổng quan về giải pháp
Trong Python, các hàm có sẵn
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 và
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0 giúp bạn xác định loại đối tượng
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True
1 – Trả về một chuỗi đại diện cho loại đối tượng>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True
2 – Trả về giá trị Boolean>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True
3 nếu đối tượng là một thể hiện của lớp và>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True
4 nếu không
Dưới đây là hai ví dụ để kiểm tra xem một đối tượng có phải là danh sách không
>>> type[[1, 2, 3]] >>> isinstance[[1, 2, 3], list] True
Bạn sẽ sử dụng
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 để kiểm tra loại đối tượng chính xác. Bạn sẽ sử dụng
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0 để xác nhận những nghi ngờ của mình về loại đối tượng. Hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0 mạnh mẽ hơn ở chỗ bạn không dựa vào các khác biệt nhỏ về chuỗi và nó cũng hoạt động với kiểu kế thừa. Ví dụ: nếu A kế thừa từ B kế thừa từ C, một đối tượng kiểu C cũng là một thể hiện của A
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True8 ví dụ với một đối số đối tượng
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 với các đối tượng tùy chỉnh
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0
Ví dụ thứ ba
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True00 dẫn chúng ta đến cái nhìn sâu sắc sau đây
🌍 Thông tin chi tiết.
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 chỉ trả về loại đối tượng trực tiếp, nhưng không hoạt động với tính kế thừa
Nếu muốn khắc phục điểm yếu này, bạn nên sử dụng hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True02 cũng dùng được cho kiểu kế thừa
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True3
Bạn cũng có thể sử dụng nó trên các đối tượng và loại tích hợp sẵn, chẳng hạn như danh sách, bộ dữ liệu, bộ và từ điển
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True4
Trường hợp sử dụng duy nhất mà bạn thích
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 hơn
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0 là nếu bạn thực sự cần biểu diễn chuỗi kiểu của một đối tượng. Mặt khác,
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0 là một chức năng linh hoạt và biểu cảm hơn
loại [] so với isinstance []
Sự khác biệt giữa
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 và
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0 là giá trị trả về là biểu diễn chuỗi cho giá trị trước và giá trị Boolean cho giá trị sau. Bạn sẽ sử dụng hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 nếu bạn không biết gì. Nếu bạn đã nghi ngờ một đối tượng thuộc một loại nhất định [=class], bạn có thể xác nhận nghi ngờ của mình bằng cách sử dụng hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0
Loại Python[] Hàm
Hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 tích hợp sẵn của Python có hai mục đích. Trước tiên, bạn có thể chuyển một đối số
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31 để kiểm tra loại đối tượng này. Thứ hai, bạn có thể chuyển ba đối số—______ 132, ________ 133 và ________ 134—để tạo một đối tượng kiểu mới có thể được sử dụng để tạo các thể hiện của kiểu mới này
Loại Python[] Hàm
Xem video này trên YouTube
Đây là cách sử dụng hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True2 với một đối số để kiểm tra loại của một
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31 đã cho
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True4
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True5Luận cứ
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31Đối tượng cần kiểm tra loại. Giá trị trả về
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True38Trả về biểu diễn chuỗi của lớp
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31
Hướng dẫn liên quan. Loại Python[] Hàm
Hàm isinstance[] trong Python
Hàm
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True40 tích hợp sẵn của Python lấy một
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31 và một lớp làm đối số đầu vào. Nó trả về
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True3 nếu
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31 là một thể hiện của lớp. Ngược lại, nó trả về
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True4. Thay vì một lớp, bạn cũng có thể truyền một bộ các lớp để kiểm tra xem đối tượng có phải là một thể hiện của bất kỳ lớp nào trong bộ không—chẳng hạn như trong
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True45
Python isinstance[] - Hướng dẫn hữu ích với các ví dụ
Xem video này trên YouTube
Học bằng ví dụ. Đây là một ví dụ về cách sử dụng hàm tích hợp sẵn
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True0
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True6
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True7Đối số
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True31Đối tượng cần được kiểm tra tư cách thành viên của lớp.
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True48 hoặc
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True49Lớp hoặc bộ lớp đối tượng này có thể thuộc hoặc không thuộc. Giá trị trả về
>>> type[[1, 2, 3]] is list True >>> type[{1, 2, 3}] is dict True >>> type['123'] is str True >>> type[0] is int True40Trả về đối tượng có thuộc lớp [hoặc các lớp] hay không
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây