Hướng dẫn python data class best practices - các phương pháp hay nhất về lớp dữ liệu python
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng các lớp dữ liệu trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using Data Classes in Python Show
Một tính năng mới và thú vị đến trong Python 3.7 là lớp dữ liệu. Một lớp dữ liệu là một lớp thường chứa chủ yếu là dữ liệu, mặc dù không có bất kỳ hạn chế nào. Nó được tạo ra bằng cách sử dụng bộ trang trí 8 mới, như sau:
Một lớp dữ liệu đi kèm với chức năng cơ bản đã được thực hiện. Chẳng hạn, bạn có thể khởi tạo, in và so sánh các phiên bản lớp dữ liệu ra khỏi hộp: >>>
So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này:
Mặc dù đây không phải là nhiều mã để viết, nhưng bạn đã có thể thấy các dấu hiệu của nỗi đau nồi hơi: 9 và 0 đều được lặp lại ba lần chỉ đơn giản là khởi tạo một đối tượng. Hơn nữa, nếu bạn cố gắng sử dụng lớp đơn giản này, bạn sẽ nhận thấy rằng đại diện của các đối tượng không được mô tả lắm, và vì một số lý do, một nữ hoàng của trái tim không giống như một nữ hoàng của trái tim:>>> So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này:Mặc dù đây không phải là nhiều mã để viết, nhưng bạn đã có thể thấy các dấu hiệu của nỗi đau nồi hơi: 9 và 0 đều được lặp lại ba lần chỉ đơn giản là khởi tạo một đối tượng. Hơn nữa, nếu bạn cố gắng sử dụng lớp đơn giản này, bạn sẽ nhận thấy rằng đại diện của các đối tượng không được mô tả lắm, và vì một số lý do, một nữ hoàng của trái tim không giống như một nữ hoàng của trái tim:
Cách biểu diễn dữ liệu bất biến Cách các lớp dữ liệu xử lý sự kế thừaChúng tôi sẽ sớm đi sâu hơn vào các tính năng của các lớp dữ liệu. Tuy nhiên, bạn có thể nghĩ rằng bạn đã thấy một cái gì đó như thế này trước đây. >>> So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này:Mặc dù đây không phải là nhiều mã để viết, nhưng bạn đã có thể thấy các dấu hiệu của nỗi đau nồi hơi: 9 và 0 đều được lặp lại ba lần chỉ đơn giản là khởi tạo một đối tượng. Hơn nữa, nếu bạn cố gắng sử dụng lớp đơn giản này, bạn sẽ nhận thấy rằng đại diện của các đối tượng không được mô tả lắm, và vì một số lý do, một nữ hoàng của trái tim không giống như một nữ hoàng của trái tim:
Cách thêm các giá trị mặc định vào các trường lớp dữ liệu >>>
So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này:
Mặc dù đây không phải là nhiều mã để viết, nhưng bạn đã có thể thấy các dấu hiệu của nỗi đau nồi hơi: 9 và 0 đều được lặp lại ba lần chỉ đơn giản là khởi tạo một đối tượng. Hơn nữa, nếu bạn cố gắng sử dụng lớp đơn giản này, bạn sẽ nhận thấy rằng đại diện của các đối tượng không được mô tả lắm, và vì một số lý do, một nữ hoàng của trái tim không giống như một nữ hoàng của trái tim:>>>
So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này: >>>
So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này: >>> 0So sánh điều đó với một lớp học thông thường. Một lớp học thường xuyên tối thiểu sẽ trông giống như thế này: >>> 1Mặc dù đây không phải là nhiều mã để viết, nhưng bạn đã có thể thấy các dấu hiệu của nỗi đau nồi hơi: 9 và 0 đều được lặp lại ba lần chỉ đơn giản là khởi tạo một đối tượng. Hơn nữa, nếu bạn cố gắng sử dụng lớp đơn giản này, bạn sẽ nhận thấy rằng đại diện của các đối tượng không được mô tả lắm, và vì một số lý do, một nữ hoàng của trái tim không giống như một nữ hoàng của trái tim:
2Có vẻ như các lớp dữ liệu đang giúp chúng tôi ra khỏi hậu trường. Theo mặc định, các lớp dữ liệu thực hiện phương thức 1 để cung cấp một biểu diễn chuỗi đẹp và phương thức 2 có thể thực hiện so sánh đối tượng cơ bản. Đối với lớp 3 để bắt chước lớp dữ liệu ở trên, bạn cũng cần thêm các phương thức này:Ngoài 4, 5, 1 và 3, có nhiều dự án tương tự khác, bao gồm 5, 6, 7, 8 và 9. Mặc dù các lớp dữ liệu là một giải pháp thay thế mới tuyệt vời, nhưng vẫn có những trường hợp sử dụng một trong những biến thể cũ hơn phù hợp hơn. Chẳng hạn, nếu bạn cần khả năng tương thích với một API cụ thể mong đợi các bộ dữ liệu hoặc chức năng cần không được hỗ trợ trong các lớp dữ liệu.Các lớp dữ liệu cơ bảnHãy để chúng tôi quay lại các lớp dữ liệu. Ví dụ, chúng tôi sẽ tạo một lớp 00 sẽ đại diện cho các vị trí địa lý với tên cũng như vĩ độ và kinh độ: 3Điều làm cho đây là một lớp dữ liệu là trình trang trí 8 ngay trên định nghĩa lớp. Bên dưới dòng 02, bạn chỉ cần liệt kê các trường bạn muốn trong lớp dữ liệu của mình. Ký hiệu 03 được sử dụng cho các trường đang sử dụng một tính năng mới trong Python 3.6 được gọi là chú thích biến. Chúng tôi sẽ sớm nói thêm về ký hiệu này và lý do tại sao chúng tôi chỉ định các loại dữ liệu như 04 và 05.Một vài dòng mã là tất cả những gì bạn cần. Lớp mới đã sẵn sàng để sử dụng: >>> 4Bạn cũng có thể tạo các lớp dữ liệu tương tự như cách tạo các bộ dữ liệu được đặt tên. Sau đây là (gần như) tương đương với định nghĩa của 00 ở trên: 5Một lớp dữ liệu là một lớp Python thông thường. Điều duy nhất làm cho nó khác biệt là nó có các phương thức mô hình dữ liệu cơ bản như 07, 1 và 2 được triển khai cho bạn.Giá trị mặc địnhThật dễ dàng để thêm các giá trị mặc định vào các trường của lớp dữ liệu của bạn: 6Điều này hoạt động chính xác như thể bạn đã chỉ định các giá trị mặc định trong định nghĩa của phương thức 07 của một lớp thông thường:>>> 7Bạn cũng có thể tạo các lớp dữ liệu tương tự như cách tạo các bộ dữ liệu được đặt tên. Sau đây là (gần như) tương đương với định nghĩa của 00 ở trên:Một lớp dữ liệu là một lớp Python thông thường. Điều duy nhất làm cho nó khác biệt là nó có các phương thức mô hình dữ liệu cơ bản như >>> queen_of_hearts = DataClassCard('Q', 'Hearts') >>> queen_of_hearts.rank 'Q' >>> queen_of_hearts DataClassCard(rank='Q', suit='Hearts') >>> queen_of_hearts == DataClassCard('Q', 'Hearts') True 07, >>> queen_of_hearts_tuple[0] # No named access 'Q' >>> queen_of_hearts_dict['suit'] # Would be nicer with .suit 'Hearts' 1 và >>> queen_of_hearts_tuple[0] # No named access 'Q' >>> queen_of_hearts_dict['suit'] # Would be nicer with .suit 'Hearts' 2 được triển khai cho bạn.Giá trị mặc định Thật dễ dàng để thêm các giá trị mặc định vào các trường của lớp dữ liệu của bạn: 8Điều này hoạt động chính xác như thể bạn đã chỉ định các giá trị mặc định trong định nghĩa của phương thức 07 của một lớp thông thường:>>> 9Bạn cũng có thể tạo các lớp dữ liệu tương tự như cách tạo các bộ dữ liệu được đặt tên. Sau đây là (gần như) tương đương với định nghĩa của 00 ở trên:Một lớp dữ liệu là một lớp Python thông thường. Điều duy nhất làm cho nó khác biệt là nó có các phương thức mô hình dữ liệu cơ bản như >>> queen_of_hearts = DataClassCard('Q', 'Hearts') >>> queen_of_hearts.rank 'Q' >>> queen_of_hearts DataClassCard(rank='Q', suit='Hearts') >>> queen_of_hearts == DataClassCard('Q', 'Hearts') True 07, >>> queen_of_hearts_tuple[0] # No named access 'Q' >>> queen_of_hearts_dict['suit'] # Would be nicer with .suit 'Hearts' 1 và >>> queen_of_hearts_tuple[0] # No named access 'Q' >>> queen_of_hearts_dict['suit'] # Would be nicer with .suit 'Hearts' 2 được triển khai cho bạn.Giá trị mặc định Thật dễ dàng để thêm các giá trị mặc định vào các trường của lớp dữ liệu của bạn: 0Điều này hoạt động chính xác như thể bạn đã chỉ định các giá trị mặc định trong định nghĩa của phương thức 07 của một lớp thông thường:>>> 1Bạn cũng có thể tạo các lớp dữ liệu tương tự như cách tạo các bộ dữ liệu được đặt tên. Sau đây là (gần như) tương đương với định nghĩa của >>> queen_of_hearts = DataClassCard('Q', 'Hearts') >>> queen_of_hearts.rank 'Q' >>> queen_of_hearts DataClassCard(rank='Q', suit='Hearts') >>> queen_of_hearts == DataClassCard('Q', 'Hearts') True 00 ở trên:Một lớp dữ liệu là một lớp Python thông thường. Điều duy nhất làm cho nó khác biệt là nó có các phương thức mô hình dữ liệu cơ bản như 07, 1 và 2 được triển khai cho bạn.Giá trị mặc định 2Thật dễ dàng để thêm các giá trị mặc định vào các trường của lớp dữ liệu của bạn: >>> 3Bạn cũng có thể tạo các lớp dữ liệu tương tự như cách tạo các bộ dữ liệu được đặt tên. Sau đây là (gần như) tương đương với định nghĩa của >>> queen_of_hearts = DataClassCard('Q', 'Hearts') >>> queen_of_hearts.rank 'Q' >>> queen_of_hearts DataClassCard(rank='Q', suit='Hearts') >>> queen_of_hearts == DataClassCard('Q', 'Hearts') True 00 ở trên:Một lớp dữ liệu là một lớp Python thông thường. Điều duy nhất làm cho nó khác biệt là nó có các phương thức mô hình dữ liệu cơ bản như 07, 1 và 2 được triển khai cho bạn. 4Giá trị mặc định
Để đơn giản hóa so sánh các thẻ sau này, các cấp bậc và bộ quần áo cũng được liệt kê theo thứ tự thông thường của chúng. >>> 5Về lý thuyết, bây giờ bạn có thể sử dụng chức năng này để chỉ định giá trị mặc định cho 28: 6Don lồng làm điều này! Điều này giới thiệu một trong những loại chống lại phổ biến nhất trong Python: sử dụng các đối số mặc định có thể thay đổi. Vấn đề là tất cả các trường hợp của 19 sẽ sử dụng cùng một đối tượng danh sách làm giá trị mặc định của thuộc tính 30. Điều này có nghĩa là nếu, giả sử, một thẻ được xóa khỏi một 19, thì nó cũng biến mất khỏi tất cả các trường hợp khác của 19. Trên thực tế, các lớp dữ liệu cố gắng ngăn bạn thực hiện việc này và mã trên sẽ tăng 33.Thay vào đó, các lớp dữ liệu sử dụng một thứ gọi là 11 để xử lý các giá trị mặc định có thể thay đổi. Để sử dụng 11 (và nhiều tính năng thú vị khác của các lớp dữ liệu), bạn cần sử dụng trình xác định 18: 7Đối số cho 11 có thể là bất kỳ tham số nào có thể gọi được. Bây giờ thật dễ dàng để tạo ra một bộ bài chơi đầy đủ:>>> 8Về lý thuyết, bây giờ bạn có thể sử dụng chức năng này để chỉ định giá trị mặc định cho 28:
45: Sử dụng trường trong 45 của đối tượng? (Mặc định là 44.) 48: Bao gồm các trường trong so sánh? (Mặc định là 44.) 9 50: Bao gồm trường khi tính toán 51? (Mặc định là sử dụng giống như đối với 48.)>>> 0>>> queen_of_hearts = DataClassCard('Q', 'Hearts') >>> queen_of_hearts.rank 'Q' >>> queen_of_hearts DataClassCard(rank='Q', suit='Hearts') >>> queen_of_hearts == DataClassCard('Q', 'Hearts') True 53: Bản đồ với thông tin về trườngTrong ví dụ 00, bạn đã thấy cách thêm các giá trị mặc định đơn giản bằng cách viết 55. Tuy nhiên, nếu bạn cũng muốn tùy chỉnh trường, ví dụ, để ẩn nó trong 45, bạn cần sử dụng tham số 40: 58. Bạn không được chỉ định cả 40 và 11.>>> 8Tham số 53 không được sử dụng bởi chính các lớp dữ liệu nhưng có sẵn cho bạn (hoặc gói bên thứ ba) để đính kèm thông tin vào các trường. Trong ví dụ 00, ví dụ bạn có thể xác định rằng vĩ độ và kinh độ nên được đưa ra theo độ:
Hãy nhớ lại rằng chúng ta có thể tạo các sàn thẻ ra khỏi không khí mỏng: 2Mặc dù đại diện này của 19 là rõ ràng và có thể đọc được, nhưng nó cũng rất dài dòng. Tôi đã xóa 48 trong số 52 thẻ trong bộ bài ở đầu ra ở trên. Trên màn hình 80 cột, chỉ cần in toàn bộ 19 chiếm 22 dòng! Hãy để chúng tôi thêm một đại diện ngắn gọn hơn. Nói chung, một đối tượng Python có hai biểu diễn chuỗi khác nhau:>>> 3 66 được xác định bởi 67 và sẽ trả về một đại diện thân thiện với nhà phát triển là 68. Nếu có thể, đây phải là mã có thể tạo lại 68. Các lớp dữ liệu làm điều này. 4 70 được xác định bởi 71 và sẽ trả về một đại diện thân thiện với người dùng là 68. Các lớp dữ liệu không thực hiện phương thức 73, vì vậy Python sẽ quay trở lại phương thức 1.>>> 5Hãy để chúng tôi thực hiện biểu diễn thân thiện với người dùng của >>> queen_of_hearts = DataClassCard('Q', 'Hearts') >>> queen_of_hearts.rank 'Q' >>> queen_of_hearts DataClassCard(rank='Q', suit='Hearts') >>> queen_of_hearts == DataClassCard('Q', 'Hearts') True 22:Các thẻ bây giờ trông đẹp hơn nhiều, nhưng bộ bài vẫn còn dài hơn bao giờ hết: >>> 6Để chỉ ra rằng cũng có thể thêm phương thức 1 của riêng bạn, chúng tôi sẽ vi phạm nguyên tắc rằng nó sẽ trả về mã có thể tạo lại một đối tượng. Thực tế đánh bại sự thuần khiết sau tất cả. Mã sau đây thêm một biểu diễn ngắn gọn hơn của 19: 7Lưu ý Trình xác định 78 trong chuỗi định dạng 79. Điều đó có nghĩa là chúng tôi rõ ràng muốn sử dụng biểu diễn 80 của mỗi 22. Với 1 mới, đại diện của 19 dễ dàng hơn trên mắt:
Xem PEP ban đầu để biết thêm thông tin về từng tham số. Sau khi cài đặt 05, các phiên bản của 22 có thể được so sánh:>>> 8Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace Nó chỉ ra rằng các lớp dữ liệu so sánh các đối tượng như thể chúng là bộ dữ liệu của trường của chúng. Nói cách khác, một nữ hoàng cao hơn một át chủ bài vì 07 xuất hiện sau 08 trong bảng chữ cái:>>> 9Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace >>> 0Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace 1Nó chỉ ra rằng các lớp dữ liệu so sánh các đối tượng như thể chúng là bộ dữ liệu của trường của chúng. Nói cách khác, một nữ hoàng cao hơn một át chủ bài vì 07 xuất hiện sau 08 trong bảng chữ cái:Điều đó không thực sự làm việc cho chúng tôi. Thay vào đó, chúng ta cần xác định một số loại chỉ mục sắp xếp sử dụng thứ tự 09 và 10. Một cái gì đó như thế này:>>> 2Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace >>> 3Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace >>> 4Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace Nó chỉ ra rằng các lớp dữ liệu so sánh các đối tượng như thể chúng là bộ dữ liệu của trường của chúng. Nói cách khác, một nữ hoàng cao hơn một át chủ bài vì class RegularCard: def __init__(self, rank, suit): self.rank = rank self.suit = suit 07 xuất hiện sau class RegularCard: def __init__(self, rank, suit): self.rank = rank self.suit = suit 08 trong bảng chữ cái:Điều đó không thực sự làm việc cho chúng tôi. Thay vào đó, chúng ta cần xác định một số loại chỉ mục sắp xếp sử dụng thứ tự 09 và 10. Một cái gì đó như thế này: 5Đối với 22 để sử dụng chỉ mục sắp xếp này để so sánh, chúng ta cần thêm một trường 12 vào lớp. Tuy nhiên, trường này phải được tính toán từ các trường khác 13 và 14. Đây chính xác là những gì phương pháp đặc biệt 15 dành cho. Nó cho phép xử lý đặc biệt sau khi phương pháp 07 thông thường được gọi là:>>> 6Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace 7Nó chỉ ra rằng các lớp dữ liệu so sánh các đối tượng như thể chúng là bộ dữ liệu của trường của chúng. Nói cách khác, một nữ hoàng cao hơn một át chủ bài vì 07 xuất hiện sau 08 trong bảng chữ cái:>>> 8Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace Nó chỉ ra rằng các lớp dữ liệu so sánh các đối tượng như thể chúng là bộ dữ liệu của trường của chúng. Nói cách khác, một nữ hoàng cao hơn một át chủ bài vì class RegularCard: def __init__(self, rank, suit): self.rank = rank self.suit = suit 07 xuất hiện sau class RegularCard: def __init__(self, rank, suit): self.rank = rank self.suit = suit 08 trong bảng chữ cái:Điều đó không thực sự làm việc cho chúng tôi. Thay vào đó, chúng ta cần xác định một số loại chỉ mục sắp xếp sử dụng thứ tự 09 và 10. Một cái gì đó như thế này: 9Đối với 22 để sử dụng chỉ mục sắp xếp này để so sánh, chúng ta cần thêm một trường 12 vào lớp. Tuy nhiên, trường này phải được tính toán từ các trường khác 13 và 14. Đây chính xác là những gì phương pháp đặc biệt 15 dành cho. Nó cho phép xử lý đặc biệt sau khi phương pháp 07 thông thường được gọi là:>>> 0Làm thế nào là hai thẻ được so sánh mặc dù? Bạn chưa chỉ định cách thức đặt hàng như thế nào và vì một số lý do, Python dường như tin rằng một nữ hoàng cao hơn một ace 1Nó chỉ ra rằng các lớp dữ liệu so sánh các đối tượng như thể chúng là bộ dữ liệu của trường của chúng. Nói cách khác, một nữ hoàng cao hơn một át chủ bài vì 07 xuất hiện sau 08 trong bảng chữ cái: 2Điều đó không thực sự làm việc cho chúng tôi. Thay vào đó, chúng ta cần xác định một số loại chỉ mục sắp xếp sử dụng thứ tự 09 và 10. Một cái gì đó như thế này:Đối với 22 để sử dụng chỉ mục sắp xếp này để so sánh, chúng ta cần thêm một trường 12 vào lớp. Tuy nhiên, trường này phải được tính toán từ các trường khác 13 và 14. Đây chính xác là những gì phương pháp đặc biệt 15 dành cho. Nó cho phép xử lý đặc biệt sau khi phương pháp 07 thông thường được gọi là: 3Sau đó, thứ tự của các trường trong 37 vẫn sẽ là 13, 41, 42, 35. Tuy nhiên, giá trị mặc định của 42 sẽ là 52.>>> 4Tối ưu hóa các lớp dữ liệuTôi sẽ kết thúc hướng dẫn này với một vài từ về các vị trí. Các khe có thể được sử dụng để làm cho các lớp nhanh hơn và sử dụng ít bộ nhớ hơn. Các lớp dữ liệu không có cú pháp rõ ràng để làm việc với các vị trí, nhưng cách tạo các vị trí bình thường cũng hoạt động cho các lớp dữ liệu. (Họ thực sự chỉ là các lớp học thường xuyên!) 5Về cơ bản, các khe được xác định bằng cách sử dụng 53 để liệt kê các biến trên một lớp. Các biến hoặc thuộc tính không có trong 53 có thể không được xác định. Hơn nữa, một lớp khe có thể không có giá trị mặc định.Lợi ích của việc thêm các hạn chế như vậy là một số tối ưu hóa nhất định có thể được thực hiện. Chẳng hạn, các lớp các vị trí chiếm ít bộ nhớ hơn, như có thể được đo bằng pympler: >>> 6Tối ưu hóa các lớp dữ liệu >>> 7Tối ưu hóa các lớp dữ liệu Tôi sẽ kết thúc hướng dẫn này với một vài từ về các vị trí. Các khe có thể được sử dụng để làm cho các lớp nhanh hơn và sử dụng ít bộ nhớ hơn. Các lớp dữ liệu không có cú pháp rõ ràng để làm việc với các vị trí, nhưng cách tạo các vị trí bình thường cũng hoạt động cho các lớp dữ liệu. (Họ thực sự chỉ là các lớp học thường xuyên!)Về cơ bản, các khe được xác định bằng cách sử dụng 53 để liệt kê các biến trên một lớp. Các biến hoặc thuộc tính không có trong 53 có thể không được xác định. Hơn nữa, một lớp khe có thể không có giá trị mặc định.Lợi ích của việc thêm các hạn chế như vậy là một số tối ưu hóa nhất định có thể được thực hiện. Chẳng hạn, các lớp các vị trí chiếm ít bộ nhớ hơn, như có thể được đo bằng pympler:
Bạn đã thấy cách xác định các lớp dữ liệu của riêng bạn, cũng như: Cách thêm các giá trị mặc định vào các trường trong lớp dữ liệu của bạn Cách tùy chỉnh thứ tự của các đối tượng lớp dữ liệu Cách làm việc với các lớp dữ liệu bất biến This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using Data Classes in Python Tôi có nên luôn luôn sử dụng DataClass Python không?Nếu bạn không phải hỗ trợ ứng dụng hoặc thư viện của mình trên các phiên bản Python cũ hơn, thì DataClasses dường như có ý nghĩa khi thích hợp.Nếu bạn làm như vậy, bạn sẽ cần phải sống mà không có họ hoặc backport mô -đun.. If you do, you will either need to live without them or backport the module.
Python lớp dữ liệu là gì?Một lớp dữ liệu là một lớp Python thông thường.Điều duy nhất làm cho nó khác biệt là nó có các phương thức mô hình dữ liệu cơ bản như.__trong đó__() , .__repr __ (), và.__eq __ () được thực hiện cho bạn.a regular Python class. The only thing that sets it apart is that it has basic data model methods like . __init__() , . __repr__() , and . __eq__() implemented for you.
__ post_init __ là gì?Phương thức __post_init__ được gọi chỉ sau khi khởi tạo.Nói cách khác, nó được gọi sau khi đối tượng nhận được các giá trị cho các trường của nó, chẳng hạn như tên, lục địa, dân số và chính thức_lang.just after initialization. In other words, it is called after the object receives values for its fields, such as name , continent , population , and official_lang .
Các lớp dữ liệu có thể có phương thức python không?DataClasses cung cấp một trình trang trí và các hàm để tự động thêm các phương thức đặc biệt được tạo như __init __ (), __repr __ () và __eq __ () cho các lớp do người dùng xác định.. |