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
для использования?