Lớp dữ liệu Python 2
Các lớp dữ liệu Python có thể làm cho các lớp Python của bạn ít dài dòng hơn và đồng thời mạnh hơn. Đây là phần giới thiệu về cách sử dụng lớp dữ liệu trong chương trình Python của bạn Show
Nhà văn cao cấp, InfoWorld. Mục lục Cho xem nhiều hơn Mọi thứ trong Python là một đối tượng, hay có câu nói như vậy. Nếu bạn muốn tạo các đối tượng tùy chỉnh của riêng mình, với các thuộc tính và phương thức riêng của chúng, bạn sử dụng đối tượng Dataclasses, được giới thiệu trong Python 3. 7 (và được nhập vào Python 3. 6), cung cấp một cách thuận tiện, ít dài dòng hơn để tạo lớp học. Nhiều điều thông thường bạn làm trong một lớp, chẳng hạn như khởi tạo các thuộc tính từ các đối số được truyền cho lớp, có thể được rút gọn thành một vài hướng dẫn cơ bản Ví dụ lớp dữ liệu PythonĐây là một ví dụ đơn giản về một lớp thông thường trong Python
Vấn đề đau đầu nhất ở đây là cách mỗi đối số được chuyển đến 0, v.v. thì sao? Đây là cùng một lớp Python, được triển khai dưới dạng lớp dữ liệu Python
Khi bạn chỉ định các thuộc tính, được gọi là các trường, trong một lớp dữ liệu, trình trang trí 1 sẽ tự động tạo tất cả mã cần thiết để khởi tạo chúng. Nó cũng lưu giữ thông tin loại cho từng thuộc tính, vì vậy nếu bạn sử dụng trình giả mạo mã như 2, nó sẽ đảm bảo rằng bạn đang cung cấp đúng loại biến cho hàm tạo của lớpMột điều khác mà 1 làm đằng sau hậu trường là tự động tạo mã cho một số phương thức dunder phổ biến trong lớp. Trong lớp học thông thường ở trên, chúng tôi phải tự tạo 4. Trong lớp dữ liệu, trình trang trí 1 tạo ra 4 cho bạnKhi một lớp dữ liệu được tạo, nó giống hệt về mặt chức năng với một lớp thông thường. Không có hình phạt hiệu suất cho việc sử dụng một dataclass. Chỉ có một hình phạt hiệu suất nhỏ khi khai báo lớp là một lớp dữ liệu và đó là chi phí một lần khi đối tượng lớp dữ liệu được tạo Khởi tạo lớp dữ liệu Python nâng caoTrình trang trí lớp dữ liệu có thể lấy. Hầu hết thời gian bạn sẽ không cần cung cấp chúng, nhưng chúng có thể hữu ích cho một số trường hợp cạnh nhất định. Dưới đây là một số cách hữu ích nhất (tất cả đều là 7)
Tùy chỉnh các trường lớp dữ liệu Python bằng hàm from dataclasses import dataclass, field from typing import List @dataclass class Book: '''Object for tracking physical books in a collection.''' name: str condition: str = field(compare=False) weight: float = field(default=0.0, repr=False) shelf_id: int = 0 chapters: List[str] = field(default_factory=list) 1Cách thức hoạt động mặc định của lớp dữ liệu sẽ phù hợp với phần lớn các trường hợp sử dụng. Tuy nhiên, đôi khi bạn cần tinh chỉnh cách các trường trong lớp dữ liệu của bạn được khởi tạo. Như hình bên dưới, bạn có thể sử dụng hàm 1 để tinh chỉnh
Khi bạn đặt giá trị mặc định thành phiên bản của 1, nó sẽ thay đổi cách thiết lập trường tùy thuộc vào thông số bạn cung cấp cho 1. Đây là những tùy chọn được sử dụng phổ biến nhất cho 1 (có những tùy chọn khác)
Lưu ý rằng chúng tôi đã phải điều chỉnh thứ tự của các trường để các trường không mặc định xuất hiện trước Kiểm soát khởi tạo lớp dữ liệu PythonTại thời điểm này có lẽ bạn đang tự hỏi. Nếu phương thức __post_init__Nhập phương thức 4. Nếu bạn bao gồm phương thức 4 trong định nghĩa lớp dữ liệu của mình, thì bạn có thể cung cấp hướng dẫn để sửa đổi các trường hoặc dữ liệu thực thể khác
Trong ví dụ này, chúng tôi đã tạo một phương thức 4 để đặt 7 thành 8 nếu điều kiện của sách được khởi tạo là 9. Lưu ý cách chúng tôi sử dụng 1 để khởi tạo 7 và chuyển class 2 như class 3 đến 1. Điều này có nghĩa là 7 sẽ không được khởi tạo trong __init__ initVarMột cách khác để tùy chỉnh thiết lập lớp dữ liệu Python là sử dụng loại 4, nhưng sẽ không được lưu trữ trong thể hiện của lớpBằng cách sử dụng
Việc đặt loại trường thành 1 không biến trường đó thành trường lớp dữ liệu mà chuyển dữ liệu sang 4 dưới dạng đối sốTrong phiên bản này của lớp 1 dưới dạng một trường trong thể hiện của lớp. Chúng tôi chỉ sử dụng 1 trong giai đoạn khởi tạo. Nếu chúng tôi thấy rằng 1 đã được đặt thành __init__ 8, thì chúng tôi sẽ đặt 7 thành 8 — nhưng chúng tôi không lưu trữ 1 chính nó trong thể hiện của lớpKhi nào nên sử dụng lớp dữ liệu Python—và khi nào không sử dụng chúngMột kịch bản phổ biến cho việc sử dụng các lớp dữ liệu là thay thế cho. Các lớp dữ liệu cung cấp các hành vi giống nhau và hơn thế nữa, đồng thời chúng có thể trở thành bất biến (như các lớp Một trường hợp sử dụng khả thi khác là thay thế các từ điển lồng nhau, vốn có thể trở nên vụng về khi làm việc, bằng các thể hiện lớp dữ liệu lồng nhau. Nếu bạn có lớp dữ liệu Nhưng không phải mọi lớp Python đều cần phải là một lớp dữ liệu. Nếu bạn đang tạo một lớp chủ yếu như một cách để nhóm một loạt các phương thức tĩnh lại với nhau, chứ không phải để chứa dữ liệu, thì bạn không cần biến lớp đó thành một lớp dữ liệu. Chẳng hạn, một mẫu phổ biến với các trình phân tích cú pháp là có một lớp nhận cây cú pháp trừu tượng, duyệt cây và gửi các lệnh gọi đến các phương thức khác nhau trong lớp dựa trên loại nút. Vì lớp trình phân tích cú pháp có rất ít dữ liệu của riêng nó nên lớp dữ liệu không hữu ích ở đây Có liên quan
Serdar Yegulalp là một nhà văn cao cấp tại InfoWorld, tập trung vào học máy, container hóa, devops, hệ sinh thái Python và đánh giá định kỳ Lớp dữ liệu Python là gì?Trong Python, lớp dữ liệu là lớp được thiết kế để chỉ chứa các giá trị dữ liệu . Chúng không khác với các lớp thông thường, nhưng chúng thường không có bất kỳ phương thức nào khác. Chúng thường được sử dụng để lưu trữ thông tin sẽ được chuyển giữa các phần khác nhau của chương trình hoặc hệ thống.
Phiên bản Python nào có Dataclasses?Bắt đầu từ phiên bản 3. 7 , Python đã giới thiệu các lớp dữ liệu (xem PEP 557), một tính năng mới xác định các lớp chứa và đóng gói dữ liệu.
Liệu Python 3. 6 có dataclass không?Lớp dữ liệu, được giới thiệu trong Python 3. 7 (và được nhập ngược vào Python 3. 6) , cung cấp một cách thuận tiện, ít dài dòng hơn để tạo các lớp. Nhiều điều thông thường bạn làm trong một lớp, chẳng hạn như khởi tạo các thuộc tính từ các đối số được truyền cho lớp, có thể được rút gọn thành một vài hướng dẫn cơ bản.
Dataclasses có sẵn trong Python không?Các lớp dữ liệu là một trong những tính năng mới của Python 3. 7 . Với các lớp dữ liệu, bạn không cần phải viết mã soạn sẵn để khởi tạo, biểu diễn và so sánh phù hợp cho các đối tượng của mình. Bạn đã thấy cách định nghĩa các lớp dữ liệu của riêng mình, cũng như. Cách thêm giá trị mặc định vào các trường trong lớp dữ liệu của bạn. |