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 cái nhìn 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[]
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[]
để 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 chuỗi nhỏ 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[]
với các đối tượng tùy chỉnh
>>> class Animal: pass >>> class Snake[Animal]: pass >>> a = Animal[] >>> b = Snake[] >>> type[a] is Animal True >>> type[b] is Snake True >>> type[b] is Animal False
Ví dụ thứ ba
>>> class Animal: pass >>> class Snake[Animal]: pass >>> a = Animal[] >>> b = Snake[] >>> type[a] is Animal True >>> type[b] is Snake True >>> type[b] is Animal False0 dẫn chúng ta đến cái nhìn sâu sắc sau đây
🌍 Thông tin chi tiết. type[]
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
Muốn khắc phục điểm yếu này thì nên dùng hàm
>>> class Animal: pass >>> class Snake[Animal]: pass >>> a = Animal[] >>> b = Snake[] >>> type[a] is Animal True >>> type[b] is Snake True >>> type[b] is Animal False2 cũng dùng được cho kiểu kế thừa
>>> isinstance[Snake[], Animal] True
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
>>> isinstance[[1, 2, 3], list] True >>> isinstance[[1, 2, 3], tuple] True >>> isinstance[{1: 'a', 2: 'b'}, dict] True >>> isinstance[{1, 2, 3}, set] True
Trường hợp sử dụng duy nhất mà bạn thích type[]
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[]
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[]
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 sự 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[]
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ố
>>> isinstance[Snake[], Animal] True1 để kiểm tra loại đối tượng này. Thứ hai, bạn có thể chuyển ba đối số—
>>> isinstance[Snake[], Animal] True2,
>>> isinstance[Snake[], Animal] True3 và
>>> isinstance[Snake[], Animal] True4—để 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
Dưới đây là cách sử dụng hàm type[]
với một đối số để kiểm tra loại của một
>>> isinstance[Snake[], Animal] True1 đã cho
>>> type[42] >>> type['Finxter']
Syntax: type[object] # Returns class representation of objectĐối số
>>> isinstance[Snake[], Animal] True1Đối tượng được kiểm tra loại. Giá trị trả về
>>> isinstance[Snake[], Animal] True8Trả về chuỗi đại diện của lớp của
>>> isinstance[Snake[], Animal] True1
Hướng dẫn liên quan. Loại Python[] Hàm
Hàm isinstance[] trong Python
Hàm
>>> isinstance[[1, 2, 3], list] True >>> isinstance[[1, 2, 3], tuple] True >>> isinstance[{1: 'a', 2: 'b'}, dict] True >>> isinstance[{1, 2, 3}, set] True0 tích hợp sẵn của Python lấy một
>>> isinstance[Snake[], Animal] True1 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
>>> isinstance[Snake[], Animal] True1 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ộ hay không—chẳng hạn như trong
>>> isinstance[[1, 2, 3], list] True >>> isinstance[[1, 2, 3], tuple] True >>> isinstance[{1: 'a', 2: 'b'}, dict] True >>> isinstance[{1, 2, 3}, set] True5
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
>>> isinstance[42, int] True >>> isinstance[42, [float, list, int]] True >>> isinstance['42', [float, list, int]] False
Syntax: isinstance[object, class] # Check if object is instance of class isinstance[object, [class_A, class_B, ...]] # Check if object is instance of any of the classes in the tupleĐối số
>>> isinstance[Snake[], Animal] True1Đối tượng cần được kiểm tra tư cách thành viên của lớp.
>>> isinstance[[1, 2, 3], list] True >>> isinstance[[1, 2, 3], tuple] True >>> isinstance[{1: 'a', 2: 'b'}, dict] True >>> isinstance[{1, 2, 3}, set] True8 hoặc
>>> isinstance[[1, 2, 3], list] True >>> isinstance[[1, 2, 3], tuple] True >>> isinstance[{1: 'a', 2: 'b'}, dict] True >>> isinstance[{1, 2, 3}, set] True9Lớp hoặc bộ các lớp mà đối tượng này có thể thuộc hoặc không thuộc về. Giá trị trả về
>>> type[42] >>> type['Finxter']0Trả 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