Hàm type() trong Python

Hàm tích hợp sẵn type() trong Python trả về kiểu của đối tượng được truyền dưới dạng tham số. Hàm type() chủ yếu được sử dụng cho mục đích gỡ lỗi.

Cú pháp

Có hai loại tham số khác nhau có thể được truyền cho hàm type() ta gọi là tham số đơn và tham số ba.

type(object) type(name, bases, dict)
  • Nếu loại tham số đơn (object) được truyền, kết quả sẽ trả về kiểu đối tượng đã cho.
  • Nếu tham số ba (name, bases, dict) được truyền, nó sẽ trả về một đối tượng kiểu mới.

type() với một tham số đối tượng duy nhất (tham số đơn)

Nếu loại tham số đơn (object) được truyền, kết quả sẽ trả về kiểu đối tượng đã cho.

Ví dụ: Làm thế nào để có được kiểu đối tượng?

numberList = [1, 2] print(type(numberList)) numberDict = {1: 'one', 2: 'two'} print(type(numberDict)) class Foo: a = 0 InstanceOfFoo = Foo() print(type(InstanceOfFoo))

Chạy chương trình, kết quả trả về là:

<class 'list'> <class 'dict'> <class 'Foo'>

Nếu bạn muốn kiểm tra kiểu đối tượng thì cũng có thể sử dụng hàm Python isinstance(),vì hàm isinstance() cũng có nhiệm vụ kiểm tra xem đối tượng đã cho có phải là một cá thể của lớp con hay không.

type() với ba tham số name, bases, dict (tham số ba)

Nếu tham số ba (name, bases, dict) được truyền, nó sẽ trả về một đối tượng kiểu mới.

  • name: tên lớp sẽ trở thành thuộc tính __name__.
  • bases: tuple của các lớp, tương ứng với thuộc tính __base__.
  • dict: một từ điển chứa các namespace cho class, tương ứng với thuộc tính __dict__.

Ví dụ: Tạo kiểu đối tượng sử dụng type()

o1 = type('X', (object,), dict(a='Foo', b=12)) print(type(o1)) print(vars(o1)) class test: a = 'Foo' b = 12 o2 = type('Y', (test,), dict(a='Foo', b=12)) print(type(o2)) print(vars(o2))

Chạy chương trình, kết quả trả về là:

<class 'type'> {'a': 'Foo', 'b': 12, '__weakref__': <attribute '__weakref__' of 'X' 
objects>, '__dict__': <attribute '__dict__' of 'X' objects>, '__module__': 
'__main__', '__doc__': None} <class 'type'> {'a': 'Foo', '__module__': '__main__', 'b': 12, '__doc__': None}

Trong ví dụ trên, hàm vars() được sử dụng để trả về thuộc tính __dict__. __dict__ được sử dụng để lưu trữ các thuộc tính có thể ghi của đối tượng.