sách gpt4 ăn đã đi

Python 3.7 : Utility of Dataclasses and SimpleNameSpace

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 21:13:58 24 4
mua khóa gpt4 giày nike

Python 3.7 提供了新的 dataclasses,它们具有预定义的特殊功能。

从总体上看,dataclassesKhông gian tên đơn giản 都提供了很好的数据封装工具。

@dataclass
class MyData:
name:str
age: int

data_1 = MyData(name = 'JohnDoe' , age = 23)

data_2 = SimpleNamespace(name = 'JohnDoe' , age = 23)

很多时候我使用 Không gian tên đơn giản 只是为了包装数据并移动它。

我什至将其子类化以添加特殊功能:

từ các loại nhập SimpleNamespace

class NewSimpleNameSpace(SimpleNamespace):
def __hash__(self):
return some_hashing_func(self.__dict__)

对于我的问题:

  1. 人们如何在 Không gian tên đơn giảndataclasses 之间进行选择?
  2. 当扩展 Không gian tên đơn giản 可以达到相同的效果时,为什么它们是必要的?
  3. 所有其他用例 dataclasses 迎合什么?

câu trả lời hay nhất

Dataclasses 更像 têntuple 和流行的 attrs包而不是 Không gian tên đơn giản (the PEP 中甚至没有提到)。它们有两种不同的预期目的。

数据类

  • 结构化
  • 键入(默认情况下,但可选)
  • 为基本的 dunder 方法(__nóng____hash____eq__ 等)编写大部分样板文件
  • 为属性的默认值提供简单的机制
  • 可以轻松添加__slots__和方法

简单命名空间

  • “抓包”数据结构
  • 用于您需要的不仅仅是字典但不需要类的地方
  • 不打算使用 __slots__
  • 之类的东西

từ Không gian tên đơn giản 文档:

SimpleNamespace may be useful as a replacement for class NS: pass. However, for a structured record type use namedtuple() thay vì.

由于 @dataclass 应该替换 têntuple 的很多用例,命名记录/结构应该用 @dataclass 来完成,而不是 Không gian tên đơn giản

您可能还想查看 this PyCon talk by Raymond Hettinger ,在那里他进入了 @dataclass 的背景故事以及它的用途。

关于Python 3.7 : Utility of Dataclasses and SimpleNameSpace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51082418/

24 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress