Python 3.7提供了新的dataclasses
,其中包括预定义的特殊函数。
从概览的角度来看,dataclasses
和SimpleNamespace
都提供了很好的数据封装功能。
@dataclass
class MyData:
name:str
age: int
data_1 = MyData(name = 'JohnDoe' , age = 23)
data_2 = SimpleNamespace(name = 'JohnDoe' , age = 23)
很多时候我使用 SimpleNamespace
来包装数据并移动它。
我甚至会继承它以添加特殊功能:
我甚至会子类化它来添加特殊函数:
from types import SimpleNamespace
class NewSimpleNameSpace(SimpleNamespace):
def __hash__(self):
return some_hashing_func(self.__dict__)
对于我的问题:
- 某人如何在
SimpleNamespace
和dataclasses
之间做出选择? - 当可以通过扩展
SimpleNamespace
来实现相同的效果时,为什么它们是必要的? dataclasses
适用于哪些其他用例?
- 某人如何在
SimpleNamespace
和dataclasses
之间做出选择? - 当可以通过扩展
SimpleNamespace
来实现相同的效果时,为什么需要它们? dataclasses
适用于哪些其他用例?
__repr__
。dataclass添加了更多,例如__eq__
,__hash__
等。 - L3viathan