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

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ố: 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ố: 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ố

  • 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.

Tổng kết

  • 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.
  • Đối với 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.
  • Python có một hàm dựng sẵn gọi là instance() để 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, nó sẽ trả về true nếu không thì trả về false. Sử dụng isinstance(), bạn có thể kiểm tra string, float, int, list, tuple, dict, set, class, v.v.
  • Sử dụng phương thức isinstance(), bạn có thể kiểm tra chuỗi, float, int, list, tuple, dict, set, class, v.v.