type() và isinstance() trong Python với các ví dụ

⚡ Tóm tắt thông minh

Python `type()` và `isinstance()` là các hàm tích hợp sẵn dùng để kiểm tra lớp của một đối tượng. `type()` trả về lớp chính xác, trong khi `isinstance()` kiểm tra xem một đối tượng có thuộc về một lớp hay một bộ các lớp hay không. Cả hai đều được trình bày ở đây với các ví dụ.

  • 🔍 kiểu(): Trả về chính xác kiểu dữ liệu của một đối tượng, chẳng hạn như str, int hoặc list.
  • isinstance(): Kiểm tra xem một đối tượng có phải là một thể hiện của một lớp nhất định hay không, trả về True hoặc False.
  • 🧩 Kiểu dữ liệu ba tham số(): type(name, bases, dict) tạo ra một đối tượng lớp hoàn toàn mới một cách động.
  • 🌳 Các lớp con: isinstance() trả về True cho các lớp con; type() chỉ kiểm tra lớp cụ thể.
  • 🎯 Trường hợp sử dụng: Xác thực kiểu dữ liệu đầu vào, gỡ lỗi biến và logic rẽ nhánh theo loại đối tượng.
  • 🤖 Hỗ trợ từ AI: Các công cụ AI như Copilot tự động tạo các kiểm tra kiểu dữ liệu (type()) và kiểm tra thể hiện (isinstance()) theo yêu cầu.

type() và isinstance() trong Python

Loại() trong là gì Python?

Python có một hàm dựng sẵn tên là type() giúp bạn tìm loại lớp của biến được cung cấp làm đầu vào. Ví dụ: nếu đầu vào là một chuỗi, bạn sẽ nhận được đầu ra dưới dạng , đối với danh sách, nó sẽ là , vân vân.

Sử dụng lệnh type(), bạn có thể truyền một đối số duy nhất và giá trị trả về sẽ là loại lớp của đối số đã cho, ví dụ: type(object).

Cũng có thể chuyển ba đối số cho type(), tức là type(name, base, dict), trong trường hợp đó, nó sẽ trả về cho bạn một đối tượng kiểu mới.

Cú pháp cho kiểu()

type() có thể được sử dụng theo hai cách như dưới đây:

 type(object)
type(namr, bases, dict)

Thông số Kỹ thuật : loại(đối tượng)

  • đối tượng: Đây là tham số bắt buộc. Nếu đây chỉ là tham số được truyền cho kiểu(), thì nó sẽ trả về cho bạn loại tham số.

Thông số Kỹ thuật : loại(tên, căn cứ, dict)

  • name: tên của lớp.
  • căn cứ: (tùy chọn). Đây là tham số tùy chọn và là lớp cơ sở
  • dict: (tùy chọn). Đây là tham số tùy chọn và là không gian tên có định nghĩa về lớp.

Trở lại giá trị

Nếu đối tượng là tham số duy nhất được truyền cho type() thì nó sẽ trả về cho bạn loại đối tượng.

Nếu các thông số được truyền cho loại là một loại (đối tượng, cơ sở, dict), thì trong trường hợp đó, nó sẽ trả về một loại đối tượng mới.

Ví dụ về kiểu()

Trong ví dụ này, chúng ta có giá trị chuỗi, số, giá trị float, số phức, danh sách, tuple, dict và set. Chúng ta sẽ sử dụng các biến có kiểu để xem đầu ra cho từng biến.

str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}

print("The type is : ",type(str_list))
print("The type is : ",type(age))
print("The type is : ",type(pi))
print("The type is : ",type(c_num))
print("The type is : ",type(my_list))
print("The type is : ",type(my_tuple))
print("The type is : ",type(my_dict))
print("The type is : ",type(my_set))

Đầu ra:

The type is :<class 'str'>
The type is :<class 'int'>
The type is :<class 'float'>
The type is :<class 'complex'>
The type is :<class 'list'>
The type is :<class 'tuple'>
The type is :<class 'dict'>
The type is :<class 'set'>

Ví dụ: Sử dụng type() cho đối tượng lớp.

Khi bạn kiểm tra đối tượng được tạo từ một lớp bằng cách sử dụng type(), nó sẽ trả về loại lớp cùng với tên của lớp. Trong ví dụ này, chúng ta sẽ tạo một lớp và kiểm tra loại đối tượng được tạo từ bài kiểm tra lớp.

class test:
    s = 'testing'

t = test()
print(type(t))

Đầu ra:

<class '__main__.test'>

Ví dụ: Sử dụng tên, căn cứ và dict trong type()

Loại này cũng có thể được gọi bằng cú pháp: type(name, base, dict).

Ba tham số được truyền cho type() tức là tên, cơ sở và dict là các thành phần tạo nên định nghĩa lớp. Tên đại diện cho tên lớp, cơ sở là lớp cơ sở và dict là từ điển của các thuộc tính của lớp cơ sở.

Trong ví dụ này, chúng ta sẽ sử dụng cả ba thông số, tức là tên, căn cứ và chính tả trong type().

Ví dụ:

class MyClass:
  x = 'Hello World'
  y = 50

t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))

Đầu ra:

<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}

Khi bạn chuyển cả ba đối số cho type() , nó sẽ giúp bạn khởi tạo lớp mới với các thuộc tính của lớp cơ sở.

isinstance() trong là gì Python?

Python isinstance là một phần của các hàm dựng sẵn trong python. Python isinstance() nhận hai đối số và nó trả về true nếu đối số đầu tiên là một thể hiện của classinfo được đưa ra làm đối số thứ hai.

Cú pháp isinstance()

isinstance(object, classtype)

Thông số Kỹ thuật

  • object: Một đối tượng mà bạn đang so sánh với classtype. Nó sẽ trả về true nếu type khớp với false.
  • loại lớp: Một loại hoặc một lớp hoặc một bộ các loại và/hoặc lớp.

Giá trị trả lại

Nó sẽ trả về true nếu đối tượng là một thể hiện của classtype và false nếu không.

Ví dụ về isinstance()

Trong phần này, chúng ta sẽ nghiên cứu các ví dụ khác nhau để tìm hiểu isinstance()

Ví dụ: isinstance() Kiểm tra số nguyên

Mã bên dưới so sánh giá trị số nguyên 51 với kiểu int. Nó sẽ trả về true nếu kiểu 51 khớp với int, nếu không thì trả về false.

age = isinstance(51,int)
print("age is an integer:", age)

Đầu ra:

age is an integer: True

Ví dụ: isinstance() Kiểm tra nổi

Trong ví dụ này chúng ta sẽ so sánh giá trị float với kiểu float tức là giá trị 3.14 sẽ được so sánh với kiểu float.

pi = isinstance(3.14,float)
print("pi is a float:", pi)

Đầu ra:

pi is a float: True

Ví dụ: isinstance() Kiểm tra chuỗi

message = isinstance("Hello World",str)
print("message is a string:", message)

Đầu ra:

message is a string: True

Ví dụ: isinstance() Kiểm tra tuple

Mã kiểm tra một bộ dữ liệu (1,2,3,4,5) có kiểu bộ dữ liệu. Nó sẽ trả về true nếu đầu vào đã cho thuộc loại tuple và sai nếu không.

my_tuple = isinstance((1,2,3,4,5),tuple)
print("my_tuple is a tuple:", my_tuple)

Đầu ra:

my_tuple is a tuple: True

Ví dụ: isinstance() Đặt kiểm tra

Mã kiểm tra một tập hợp ({1,2,3,4,5}, với loại được đặt. Nó sẽ trả về true nếu đầu vào đã cho thuộc loại được đặt và sai nếu không.

my_set = isinstance({1,2,3,4,5},set)
print("my_set is a set:", my_set)

Đầu ra:

my_set is a set: True

Ví dụ: kiểm tra danh sách isinstance()

Mã kiểm tra danh sách [1,2,3,4,5], với danh sách loại. Nó sẽ trả về true nếu đầu vào đã cho thuộc loại danh sách và sai nếu không.

my_list = isinstance([1,2,3,4,5],list)
print("my_list is a list:", my_list)

Đầu ra:

my_list is a list: True

Ví dụ: kiểm tra chính tả isinstance()

Mã này kiểm tra một dict({“A”:”a”, “B”:”b”, “C”:”c”, “D”:”d”},với loại dict. Nó sẽ trả về true nếu đầu vào đã cho thuộc loại dict và sai nếu không.

my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"},dict)
print("my_dict is a dict:", my_dict)

Đầu ra:

my_dict is a dict: True

Ví dụ: kiểm tra isinstance() trên một lớp

Mã này cho thấy kiểm tra kiểu của lớp với isinstance(). Đối tượng của lớp được so sánh với tên của lớp bên trong isinstance(). Nó trả về true nếu đối tượng thuộc về lớp và false nếu không.

class MyClass:
    _message = "Hello World"

_class = MyClass()

print("_class is a instance of MyClass() : ", isinstance(_class,MyClass))

Đầu ra:

_class is a instance of MyClass() True

Sự khác biệt giữa loại() và isinstance() trong Python

thể loại() isinstance ()
Python có một hàm dựng sẵn tên là type() giúp bạn tìm loại lớp của biến được cung cấp làm đầu vào. Python có một hàm tích hợp gọi là isinstance() để so sánh giá trị với kiểu dữ liệu được cung cấp. Nếu giá trị và kiểu dữ liệu được cung cấp khớp nhau thì sẽ trả về true, nếu không thì trả về false.
Giá trị trả về là một đối tượng kiểu Giá trị trả về là Boolean tức là đúng hoặc sai.
class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(type(A()) == A)
print(type(B()) == A)

Đầu ra:

True
False

Trong trường hợp loại, kiểm tra lớp con trả về sai.

class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(isinstance(A(), A))
print(isinstance(B(), A))

Đầu ra:

True
True

isinstance() đưa ra giá trị trung thực khi được kiểm tra bằng lớp con.

Câu Hỏi Thường Gặp

`type()` là một hàm tích hợp sẵn trả về lớp của một đối tượng. Khi được truyền một đối số, nó trả về kiểu của đối tượng; khi được truyền ba đối số (tên, cơ sở, từ điển), nó tạo ra một lớp mới.

Phương thức `isinstance(object, classtype)` kiểm tra xem một đối tượng có phải là một thể hiện của một lớp hay một bộ các lớp hay không. Nó trả về `True` nếu kiểu dữ liệu khớp và `False` nếu ngược lại.

Phương thức `type()` trả về lớp chính xác của đối tượng và bỏ qua tính kế thừa, trong khi `isinstance()` trả về `True` cho cả các lớp con. Hãy sử dụng `isinstance()` để kiểm tra kiểu linh hoạt hơn và tôn trọng hệ thống phân cấp lớp.

Đúng vậy. Gọi hàm type(name, bases, dict) với ba tham số sẽ trả về một đối tượng lớp mới một cách động. name là tên lớp, bases là một bộ dữ liệu gồm các lớp cha, và dict chứa các thuộc tính.

Đúng vậy. Phương thức `isinstance()` trả về `True` khi một đối tượng là một thể hiện của một lớp hoặc bất kỳ lớp con nào của nó. Điều này làm cho nó an toàn hơn phương thức `type()` khi kiểm tra các kiểu kế thừa.

Các trợ lý AI như GitHub Copilot tự động hoàn thành các kiểm tra kiểu dữ liệu (type()) và kiểm tra thể hiện (isinstance()), tạo ra các điều kiện kiểm tra hợp lệ và đề xuất cách tiếp cận phù hợp cho một đối tượng nhất định khi bạn viết mã. Python.

Đúng vậy. Các công cụ hỗ trợ bởi AI có thể tự động chèn các điều kiện kiểm tra isinstance(), phát hiện các đầu vào chưa được kiểm tra và tái cấu trúc các phép so sánh kiểu dữ liệu (type()) dễ bị lỗi thành các kiểm tra isinstance() an toàn hơn trên toàn bộ mã nguồn của bạn.

Phương thức `type()` trả về đối tượng lớp tương ứng với giá trị: `list` cho danh sách và `dict` cho từ điển. Khi in ra, nó sẽ hiển thị dạng như `class list` hoặc `class dict`.

Tóm tắt bài viết này với: