Tôi có nên luôn sử dụng Dataclass Python không?

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

Tôi có nên luôn sử dụng các lớp dữ liệu không?

Kết luận. dataclasses là một mô-đun mạnh mẽ giúp chúng tôi, các nhà phát triển Python, mô hình hóa dữ liệu của chúng tôi, tránh viết mã soạn sẵn và viết mã sạch và thanh lịch hơn nhiều. Tôi khuyến khích bạn khám phá và tìm hiểu thêm về các tính năng đặc biệt của lớp dữ liệu, tôi sử dụng nó trong tất cả các dự án của mình và Tôi khuyên bạn cũng nên làm như vậy .

Khi nào tôi nên sử dụng DataClass Python?

Sử dụng lớp dữ liệu, bạn có thể tạo các đối tượng chỉ đọc . Tất cả những gì bạn phải làm là đặt đối số cố định thành True bên trong trình trang trí @dataclass. Khi bạn thực hiện việc này, bạn sẽ ngăn không cho bất kỳ ai sửa đổi giá trị của các thuộc tính sau khi đối tượng được khởi tạo.

Khi nào tôi nên sử dụng DataClass?

Lớp dữ liệu cũng giống như các lớp Python khác, nhưng chúng được thiết kế đặc biệt để sử dụng làm nơi chứa dữ liệu và cung cấp cú pháp rõ ràng và ngắn gọn hơn để nhanh chóng tạo các đối tượng dữ liệu. If you know about “namedtuple” objects and have used them in Python, you can define them as mutable namedtuple type objects.

Tại sao sử dụng DataClass trên lớp?

Gõ gợi ý trong các lớp dữ liệu tăng khả năng đọc mã . Sử dụng các lớp dữ liệu trên các lớp thông thường sẽ giúp xây dựng và duy trì mã sạch hơn và giúp hiểu các loại luồng trong mã.

Chủ Đề