Cattrs: могу ли я использовать конвертер json в методе класса для создания экземпляра объекта из файла json?Python

Программы на Python
Ответить
Anonymous
 Cattrs: могу ли я использовать конвертер json в методе класса для создания экземпляра объекта из файла json?

Сообщение Anonymous »

Я активно использую attrs в течение двух лет, но cattrs открыл для себя лишь недавно, поэтому мой вопрос может показаться наивным.
В моем понимании коды, я часто использую метод класса для создания экземпляра объекта attrs из файла json. Например:

Код: Выделить всё

from cattrs.preconf.json import make_converter
from attrs import field, define, validators

from enum import StrEnum, auto
from pathlib import Path

class Colors(StrEnum):
BLUE = auto()
RED = auto()
GREEN = auto()

@define
class A:
color: Colors = field(validator=validators.instance_of(Colors))
value: int = field(validator=validators.instance_of(int))

@classmethod
def from_json_file(cls, path: Path):
with open(path, 'r') as f:
data = json.load(f)
return cls(color=Colors(data["color"]), value=data["value"])
Мне интересно, могу ли я использовать возможности ¢attrs и конвертера json следующим образом:

Код: Выделить всё

    @classmethod
def from_json_file(cls, path: Path):
json_converter = make_converter()
return json_converter.loads(path.read_text(), cls)
Код работает так, как ожидалось, но соблюдается ли он принцип cattrs, позволяющий отделить логику класса от правил un/structuring?


Подробнее здесь: https://stackoverflow.com/questions/792 ... n-object-f
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»