Một đối tượng có phải là một thể hiện của một lớp python không?

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()

>>> type([1, 2, 3]) is list
True
>>> type({1, 2, 3}) is dict
True
>>> type('123') is str
True
>>> type(0) is int
True
0 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
True
0 để 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
True
0 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
True
8 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
False
0 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
False
2 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
True
0 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
True
0 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()

>>> type([1, 2, 3]) is list
True
>>> type({1, 2, 3}) is dict
True
>>> type('123') is str
True
>>> type(0) is int
True
0 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
True
0

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)
True
1 để kiểm tra loại đối tượng này. Thứ hai, bạn có thể chuyển ba đối số—
>>> isinstance(Snake(), Animal)
True
2,
>>> isinstance(Snake(), Animal)
True
3 và
>>> isinstance(Snake(), Animal)
True
4—để 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

Một đối tượng có phải là một thể hiện của một lớp python không?

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)
True
1 đã cho

>>> type(42)

>>> type('Finxter')
Syntax: 
type(object)         # Returns class representation of object
Đối số
>>> isinstance(Snake(), Animal)
True
1Đối tượng được kiểm tra loại. Giá trị trả về
>>> isinstance(Snake(), Animal)
True
8Trả về chuỗi đại diện của lớp của
>>> isinstance(Snake(), Animal)
True
1

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)
True
0 tích hợp sẵn của Python lấy một
>>> isinstance(Snake(), Animal)
True
1 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
True
3 nếu
>>> isinstance(Snake(), Animal)
True
1 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
True
4. 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)
True
5

Python isinstance() - Hướng dẫn hữu ích với các ví dụ

Một đối tượng có phải là một thể hiện của một lớp python không?

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
True
0

>>> 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)
True
1Đố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)
True
8 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)
True
9Lớ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

Một đối tượng có phải là một thể hiện của một lớp python 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

Tại sao đối tượng được gọi là một thể hiện của một lớp?

Một lớp có thể tạo các đối tượng của chính nó với các đặc điểm và hành vi chung khác nhau. Vì vậy, chúng ta có thể nói rằng Một đối tượng đại diện cho một trạng thái cụ thể của lớp . Vì những lý do này, một Đối tượng được gọi là một Thể hiện của một Lớp.

Đối tượng có phải là một thể hiện của loại không?

"Đối tượng và loại lớp có mối quan hệ duy nhất. đối tượng là một thể hiện của kiểu và kiểu là một lớp con của đối tượng.

Sự khác biệt giữa một đối tượng và một thể hiện của một lớp là gì?

Đối tượng là một thứ thực tế được xây dựng dựa trên 'bản in màu xanh' (như ngôi nhà). Một thể hiện là một bản sao ảo (nhưng không phải là bản sao thực) của đối tượng .