Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Đối tượng Type trong Python


Trong Python, mọi thứ đều là đối tượng, kể cả các lớp (class). Tất cả các lớp là instance của lớp type. Đối tượng type chính nó cũng là instance của lớp type. Ta có thể kiểm tra hệ thống kế thừa bằng thuộc tính __bases__ của đối tượng lớp. Hàm type() trả về kiểu lớp của đối tượng được truyền vào. Nếu truyền một đối số type(obj), nó trả về kiểu của đối tượng. Nếu truyền ba đối số type(name, bases, dict), nó tạo một đối tượng kiểu mới.

Sử dụng type()

Xem kiểu lớp của các kiểu dữ liệu phổ biến. Chương trình dưới đây khởi tạo các biến và dùng type() để xác định lớp của chúng.

Ví dụ

# Một số biến
a = 5
b = 5.2
c = 'hello'
A = [1, 4, 7]
B = {'k1': 'Sun', 'K2': 'Mon', 'K3': 'Tue'}
C = ('Sky', 'Blue', 'Vast')
print(type(a))
print(type(b))
print(type(c))
print(type(A))
print(type(B))
print(type(C))

Kết quả

Chạy mã cho kết quả:

<class 'int'>
<class 'float'>
<class 'str'>
<class 'list'>
<class 'dict'>
<class 'tuple'>

Kiểu của các lớp

Nếu đi sâu hơn xem kiểu của các lớp trên, ta thấy tất cả đều thuộc lớp type.

Ví dụ

print(type(int))
print(type(dict))
print(type(list))
print(type(type))

Kết quả

Chạy mã cho kết quả:

<class 'type'>
<class 'type'>
<class 'type'>
<class 'type'>

Tạo đối tượng kiểu mới

Ta cũng có thể dùng cách tương tự để tạo đối tượng mới. Ở đây truyền ba tham số để tạo đối tượng kiểu mới.

Ví dụ

Object1 = type('A', (object,), dict(a='Hello', b=5))
print(type(Object1))
print(vars(Object1))

class NewClass:
    a = 'Good day!'
    b = 7

Object2 = type('B', (NewClass,), dict(a='Hello', b=5))
print(type(Object2))
print(vars(Object2))

Kết quả

Chạy mã cho kết quả:

<class 'type'>
{'a': 'Hello', 'b': 5, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
<class 'type'>
{'a': 'Hello', 'b': 5, '__module__': '__main__', '__doc__': None}