Chúng tôi biết rằng Python là một ngôn ngữ hướng đối tượng. Lập trình hướng đối tượng về cơ bản tập trung vào dữ liệu và các nhóm của nó hơn là các chức năng và ngôn ngữ. Nó xử lý dữ liệu và chức năng được liên kết với nó như các đối tượng
Đối tượng là những thực thể có thể lưu trữ dữ liệu cũng như cung cấp các chức năng để thao tác trên các mục dữ liệu. Nhưng làm thế nào để chúng ta tạo ra các đối tượng? . Hôm nay, chúng ta sẽ tìm hiểu chi tiết về Python Dataclass và các trường hợp sử dụng của nó
Nhưng trước tiên, chúng ta cần sửa lại các lớp trong python
Các lớp trong python là gì?
Các lớp là một tập hợp các mục dữ liệu và các phương thức liên quan của chúng. Nó định nghĩa một mẫu mã có thể được sử dụng để tạo các đối tượng. Hãy để chúng tôi hiểu điều này với một ví dụ cơ bản
Hãy để chúng tôi nói rằng bạn muốn xây dựng một văn phòng. Điều đầu tiên bạn cần là một kế hoạch xây dựng từ kiến trúc sư. Sau đó, bạn sẽ bắt đầu xây dựng tòa nhà. Trong ví dụ này, sơ đồ tòa nhà do kiến trúc sư tạo ra là lớp và tòa nhà được xây dựng được gọi là đối tượng của lớp cụ thể đó
Tương tự như vậy trong python để tạo đối tượng chúng ta cần có các lớp. Các lớp này được tạo bằng từ khóa Class trong python. Bên trong các lớp, chúng tôi có hai loại vật phẩm. Một cái được gọi là thuộc tính và cái thứ hai được gọi là phương thức
Thuộc tính là gì? . Về cơ bản, chúng là các biến lưu trữ các giá trị được sử dụng để mô tả một lớp. Ví dụ: nếu chúng ta có một lớp gọi là ô tô, thì nó sẽ có các thuộc tính như số cửa, số bánh xe, mã lực động cơ, v.v.
Các phương thức là các hàm bên trong một lớp mô tả các chức năng của một lớp. Xem xét ví dụ trước của chúng ta, nếu chúng ta có một lớp được gọi là ô tô, thì các phương thức của một lớp sẽ là ô tô di chuyển về phía trước, sang số, mở cửa, v.v.
Nhưng lớp học. Trăn 3. 7 trở đi đã giới thiệu một mô-đun mới cung cấp hỗ trợ tích hợp để sử dụng các lớp dễ dàng hơn, mô-đun Dataclass. Mô-đun này cung cấp hỗ trợ tích hợp, đặc biệt cho việc lưu trữ dữ liệu trong các lớp và biểu diễn dữ liệu trong lớp. Các lớp dữ liệu có thể được triển khai bằng cách sử dụng trình trang trí và mô-đun lớp dữ liệu trong python
Trang trí trong python là gì?
Trình trang trí được sử dụng để áp dụng chức năng bổ sung cho các đối tượng trong python. Chúng được sử dụng để cung cấp nhiều chức năng hơn mà không cần phải viết mã bổ sung bên trong đối tượng
Ví dụ: nếu chúng ta có một hàm phân tách một chuỗi và sau đó tạo ra một đầu ra nhưng chúng ta muốn đầu ra là chữ hoa, chúng ta sẽ áp dụng một trình trang trí cho hàm sẽ chuyển đổi tất cả đầu ra thành chữ hoa
Một ví dụ về điều này được đưa ra dưới đây
def make_upper[function]: def upper[]: f = function[] return f.upper[] return upper @make_upper #decorator def helloworld[]: return "hello world" print[helloworld[]]
đầu ra
HELLO WORLD
Trình trang trí được áp dụng trong python bằng ký hiệu @. Định nghĩa cho trình trang trí có thể do người dùng định nghĩa hoặc có thể nằm trong mô-đun hoặc lớp mà chúng tôi nhập. Trình trang trí không chỉ có thể được áp dụng cho các chức năng mà còn cho các lớp như chúng ta sẽ thấy bên dưới
Nói một cách đơn giản, các nhà trang trí trang trí lớp hiện có với nhiều chức năng hơn. Bây giờ chúng ta đã biết lớp và trình trang trí là gì, chúng ta hãy xem lớp dữ liệu là gì
Lớp dữ liệu là gì?
Lớp dữ liệu trong python là một lớp có cấu trúc đặc biệt được tối ưu hóa cho việc lưu trữ và biểu diễn dữ liệu. Các lớp dữ liệu có một số hàm dựng sẵn để chăm sóc việc biểu diễn dữ liệu cũng như lưu trữ dữ liệu
Bây giờ chúng ta đã biết những điều cơ bản, chúng ta hãy xem cách các lớp dữ liệu được tạo và sử dụng trong python. Các lớp dữ liệu trong python yêu cầu thư viện lớp dữ liệu có mô-đun lớp dữ liệu bên trong nó. Thư viện là tập hợp các mô-đun cung cấp các chức năng được xác định trước
Các thư viện được tạo thành từ mã cần thiết để triển khai mô-đun. Khi chúng tôi đã nhập thư viện lớp dữ liệu, chúng tôi sẽ nhập mô-đun lớp dữ liệu từ thư viện. Sau khi chúng tôi đã nhập mô-đun lớp dữ liệu, chúng tôi sẽ sử dụng các trình trang trí để cung cấp các thuộc tính của lớp dữ liệu cho lớp mới mà chúng tôi tạo
Đây là mã nguồn
from dataclasses import dataclass @dataclass #dataclass decorator class authors: name: str #Type Hints aid: int books: str
Trong mã này, chúng tôi đã tạo một lớp mới có tên là Tác giả và chúng tôi đã áp dụng thuộc tính lớp dữ liệu cho nó bằng cách sử dụng trình trang trí lớp dữ liệu. Nếu bạn quan sát mã, bạn sẽ thấy rằng các lớp dữ liệu có cách viết biến mới bên trong chúng
Mỗi lớp có trình trang trí lớp dữ liệu đều có gợi ý kiểu bên trong nó. Gợi ý kiểu về cơ bản tương đương với khai báo biến trong các ngôn ngữ lập trình khác. Tương tự như cách các biến trong các ngôn ngữ lập trình khác có kiểu dữ liệu được viết phía trước chúng, trong các lớp dữ liệu, kiểu dữ liệu cho các biến được viết phía trước chúng
Trường hợp sử dụng Dataclass trong Python
Như đã thảo luận ở trên, các lớp dữ liệu được sử dụng cụ thể để biểu diễn dữ liệu và lưu trữ dữ liệu. Do đó, hai trường hợp sử dụng phổ biến nhất của lớp dữ liệu là để in một lớp và để kiểm tra đẳng thức. Trước khi chúng ta thảo luận tại sao các lớp dữ liệu được sử dụng thay vì các lớp thông thường, chúng ta hãy xem các ví dụ mã cho cùng
from dataclasses import dataclass @dataclass #dataclass decorator class authors: name: str #Type Hints aid: int books: str class author: def __init__[self,name,aid,books]: self.name = name self.aid = aid self.books = books Obj1 = authors["Ivan",1254,"The Ghost Story"] Obj2 = authors["Ivan",1254,"The Ghost Story"] Obj3 = author["Ivan",1254,"The Ghost Story"] Obj4 = author["Ivan",1254,"The Ghost Story"] #Obj1 and Obj2 are dataclass objects #Obj3 and Obj4 are normal class objects print["Difference in Print Operation"] print[Obj1] print[Obj3] print["\nDifference in Equality Check"] print[Obj1==Obj2] print[Obj3==Obj4]
đầu ra
Difference in Print Operation
authors[name='Ivan', aid=1254, books='The Ghost Story']
Difference in Equality Check
True
False
Trong các ví dụ trên, chúng ta có thể quan sát thấy rằng thao tác in trên lớp dữ liệu và trên lớp bình thường hoạt động rất khác nhau. Khi chúng tôi in một lớp bình thường, đầu ra chúng tôi nhận được là vị trí bộ nhớ của lớp bình thường
Nhưng khi chúng ta sử dụng thao tác in trên một lớp dữ liệu, đầu ra mà chúng ta nhận được là một đầu ra được sắp xếp cho chúng ta thấy tất cả các thuộc tính của lớp và đầu ra của nó
Chúng ta cũng đã thấy toán tử đẳng thức “==” hoạt động như thế nào đối với các lớp thông thường và một lớp dữ liệu. Khi chúng ta so sánh hai lớp bình thường, trình thông dịch sẽ kiểm tra xem vị trí bộ nhớ của hai lớp bình thường có cùng một vị trí không
Nhưng khi chúng ta sử dụng toán tử đẳng thức trên hai lớp dữ liệu, nó sẽ kiểm tra xem các thuộc tính bên trong các lớp dữ liệu có giống nhau không
Sự kết luận
Chúng tôi đã tìm hiểu về các lớp thông thường và những hạn chế của chúng khi biểu diễn dữ liệu và lưu trữ dữ liệu. Sau đó, chúng tôi đã tìm hiểu về các lớp dữ liệu trong Python dưới dạng một mô-đun cung cấp các chức năng cụ thể để lưu trữ và biểu diễn dữ liệu. Bây giờ chắc bạn đã hiểu sự khác nhau giữa normal class và dataclass