Lớp dữ liệu động Python

Trong chương hướng dẫn này, chúng tôi sẽ cung cấp cho bạn cái nhìn sâu sắc hơn về điều kỳ diệu xảy ra đằng sau hậu trường, khi chúng ta định nghĩa một lớp hoặc tạo một thể hiện của một lớp. Bạn có thể tự hỏi mình. "Tôi có thực sự phải học những chi tiết bổ sung này về lập trình hướng đối tượng trong Python không?"

Đầu tiên, chúng ta sẽ tập trung vào mối quan hệ giữa loại và lớp. Trong khi định nghĩa các lớp cho đến nay, bạn có thể tự hỏi điều gì đang xảy ra "đằng sau dòng". Chúng ta đã thấy rằng việc áp dụng "kiểu" cho một đối tượng sẽ trả về lớp mà đối tượng là một thể hiện của

x = [4, 5, 9]
y = "Hello"
print(type(x), type(y))

ĐẦU RA

 

Nếu bạn áp dụng kiểu trên chính tên của một lớp, bạn sẽ nhận được "loại" lớp được trả về

print(type(list), type(str))

ĐẦU RA

 

Điều này tương tự như áp dụng loại trên loại (x) và loại (y)

x = [4, 5, 9]
y = "Hello"
print(type(x), type(y))
print(type(type(x)), type(type(y)))

ĐẦU RA

 
 

Lớp do người dùng định nghĩa (hoặc lớp "đối tượng") là một thể hiện của lớp "loại". Vì vậy, chúng ta có thể thấy rằng các lớp được tạo từ kiểu. Trong Python3 không có sự khác biệt giữa "lớp" và "loại". Trong hầu hết các trường hợp, chúng được sử dụng làm từ đồng nghĩa

Thực tế là các lớp là các thể hiện của một "loại" lớp cho phép chúng ta lập trình các siêu dữ liệu. Chúng ta có thể tạo các lớp kế thừa từ "loại" lớp. Vì vậy, siêu dữ liệu là một lớp con của lớp "loại"

Thay vì chỉ có một đối số, loại có thể được gọi với ba tham số

loại (tên lớp, siêu lớp, thuộc tính_dict)

Nếu kiểu được gọi với ba đối số, nó sẽ trả về một đối tượng kiểu mới. Điều này cung cấp cho chúng ta một dạng động của câu lệnh lớp

  • "tên lớp" là một chuỗi xác định tên lớp và trở thành thuộc tính tên;
  • "siêu lớp" là một danh sách hoặc bộ dữ liệu với các siêu lớp của lớp chúng ta. Danh sách hoặc bộ này sẽ trở thành thuộc tính cơ sở;
  • các thuộc tính_dict là một từ điển, hoạt động như không gian tên của lớp của chúng tôi. Nó chứa các định nghĩa cho thân lớp và nó trở thành thuộc tính dict

Lớp dữ liệu động Python

Chúng ta hãy xem một định nghĩa lớp đơn giản

class A:
    pass

x = A()
print(type(x))

ĐẦU RA


Chúng ta cũng có thể sử dụng "type" cho định nghĩa lớp trước đó

________số 8

ĐẦU RA


Nói chung, điều này có nghĩa là chúng ta có thể định nghĩa một lớp A với

 
0

Khi chúng ta gọi "type", phương thức gọi của type được gọi. Phương thức gọi chạy hai phương thức khác. mới và init

 
1

Phương thức mới tạo và trả về đối tượng lớp mới và sau đó, phương thức init khởi tạo đối tượng mới được tạo

 
2

ĐẦU RA

 
3

Các định nghĩa lớp cho Robot và Robot2 hoàn toàn khác nhau về mặt cú pháp, nhưng chúng triển khai cùng một lớp một cách logic

Python thực sự làm gì trong ví dụ đầu tiên, tôi. e. "cách thông thường" để xác định các lớp, là như sau. Python xử lý câu lệnh lớp hoàn chỉnh từ lớp Robot để thu thập các phương thức và thuộc tính của Robot để thêm chúng vào thuộc tính_dict của lệnh gọi kiểu. Vì vậy, Python sẽ gọi kiểu theo cách tương tự hoặc giống như chúng ta đã làm trong Robot2

Lớp dữ liệu @ trong Python là gì?

Lớp dữ liệu là các lớp python, nhưng phù hợp để lưu trữ các đối tượng dữ liệu . Mô-đun này cung cấp một trình trang trí và các chức năng để tự động thêm các phương thức đặc biệt đã tạo như __init__() và __repr__() vào các lớp do người dùng định nghĩa.

Lớp dữ liệu là gì?

Một lớp dữ liệu là danh sách các thuộc tính phân bổ tập dữ liệu và giá trị của chúng . Bạn không thể gán một lớp dữ liệu cho một đối tượng; .