Описание тега python-dataclasses

По вопросам, касающимся модуля Python dataclasses (новый в Python 3.7). Dataclasses - это классы Python, но они особенно подходят для хранения объектов данных.
7 ответов

Классы данных и типизация. Основные варианты использования.

Короче PEP-557 ввел классы данных в стандартную библиотеку Python, которые в основном могут выполнять ту же роль, что и collections.namedtuple а также typing.NamedTuple, И теперь мне интересно, как разделить сценарии использования, в которых namedt…
1 ответ

Как сделать поля "только для ключевых слов" с помощью классов данных?

Начиная с версии 3.0 поддерживается только ключевое слово аргумента: class S3Obj: def __init__(self, bucket, key, *, storage_class='Standard'): self.bucket = bucket self.key = key self.storage_class = storage_class Как получить такую ​​подпись с по…
4 ответа

Как сделать класс данных Python хэшируемым?

Скажи, у меня есть класс данных в python3. Я хочу иметь возможность хешировать и упорядочивать эти объекты. Я только хочу, чтобы они заказывали / хэшировали по id. Я вижу в документах, что я могу просто реализовать __hash__ и все такое, но я бы хоте…
18 сен '18 в 16:03
0 ответов

Pythonic способ проверить, имеет ли поле класса данных значение по умолчанию

Я недавно использовал Python 3.7 и искал способы использовать новые классы данных. В основном у меня был метод, который перебирает поля класса данных и проверяет, имеют ли они значение по умолчанию: from dataclasses import fields, MISSING @classmeth…
03 дек '18 в 08:14
3 ответа

Поля с ошибками в классе Python @dataclass

Как заставить это поднять исключение при установке полей с ошибками в @dataclassкласс Python? Я хочу практичный способ сделать это. Нужно ли мне писать свой собственный декоратор? @dataclass class C(object): x: int = 1 obj = C() obj.y = 2 # should r…
14 дек '18 в 04:57
0 ответов

Python @dataclass с множественным наследованием (mixin) и смешанными параметрами по умолчанию

Я пытаюсь создать класс данных Python 3.7, состоящий из унаследованных классов данных: from dataclasses import dataclass @dataclass class A: title: str synopsis: str = "A book" @dataclass class B: id: str description: str = "A short book about somet…
05 янв '19 в 11:51
5 ответов

Python: проверка правильности ввода при изменении класса данных

В Python 3.7 есть эти новые контейнеры "dataclass", которые в основном похожи на изменяемые именованные кортежи. Предположим, я создаю класс данных, предназначенный для представления человека. Я могу добавить подтверждение ввода через __post_init__(…
02 фев '19 в 00:18
1 ответ

Функция по атрибуту init

Мне нужно вызвать функцию, прежде чем инициализировать атрибут, предпочтительно используя класс данных python3.7, также может быть назван кортежем. Этот код делает что-то похожее, и имя атрибута просто набирается один раз, но это очень запутанно, и …
21 янв '19 в 13:42
1 ответ

Python Dataclass дает мне объект 'function' не имеет атрибута __mro__?

Как и в последнем вопросе: TypeError: объект int не является итеративным, пока не существует итераций? Я нахожу проблему в моей программе. То есть: в Python set( (0,0) )на самом деле дает вам{0}, но я хочу{(0,0)} collections.deque( ((0, 0), [ (0, 0)…
07 фев '19 в 15:07
2 ответа

Python 3.7: Утилита классов данных и SimpleNameSpace

Python 3.7 предоставляет новые dataclasses которые имеют предопределенные специальные функции. С точки зрения обзора, dataclasses а также SimpleNameSpace оба обеспечивают хорошее средство инкапсуляции данных. @dataclass class MyData: name:str age: i…
28 июн '18 в 12:02
3 ответа

Как получить доступ к другому аргументу в аргументе по умолчанию в классе данных Python?

Я пытаюсь получить значение по умолчанию id_ от name и наоборот. @dataclass class Item: id_ = NAME_TO_ID[name] name = ID_TO_NAME[id_] Я должен иметь возможность вызывать класс так: Item(id_=123) Item(name='foo') Если возможно, я также хотел бы, чтоб…
16 окт '18 в 14:20
2 ответа

Как сделать класс attrs с распаковкой кортежей и dict, но без дополнительных методов

Я только начал использовать attrs модуль для Python, который довольно гладкий (или аналогично мы могли бы использовать Python 3.7 DataClasses). Обычный шаблон использования, который у меня есть, заключается в том, чтобы класс был контейнером для зна…
29 авг '18 в 14:24
16 ответов

Наследование классов в классах данных Python 3.7

В настоящее время я пробую свои силы на новых конструкциях класса данных, представленных в Python 3.7. В настоящее время я застрял при попытке сделать наследование родительского класса. Похоже, что порядок аргументов не соответствует моему текущему …
0 ответов

Как преобразовать список объектов класса данных в двумерный массив?

Раньше я представлял свои записи данных в виде кортежей и преобразовывал их список в пустую таблицу (двумерный массив) с помощью простого np.array(my_tuples_list), Но код, работающий с кортежами, выглядел очень уродливо, так как они содержали слишко…
30 сен '18 в 11:44
2 ответа

Как сравнить равенство классов данных, содержащих numpy.ndarray (bool(a==b) повышает ValueError)?

Если я создаю класс данных Python, содержащий Numpy ndarray, я больше не могу использовать автоматически сгенерированный __eq__ больше. import numpy as np @dataclass class Instr: foo: np.ndarray bar: np.ndarray arr = np.array([1]) arr2 = np.array([1…
08 авг '18 в 09:58
1 ответ

Не удалось импортировать модуль классов данных

Сегодня я установил python 3.7 из apt-get, чтобы опробовать новый модуль dataclasses. Я установил его отдельно, потому что python3.6 не был обновлен до 3.7. Когда я печатаю: python3.7 --version, это дает мне: >>> Python 3.7.0a2 как моя теку…
3 ответа

Классы данных Python: какой тип использовать, если __post_init__ выполняет преобразование типов?

У меня есть класс Python, с полем, которому можно передать один из нескольких типов последовательности. Для упрощения я буду придерживаться кортежей и списков. __init__ преобразует параметр в MyList, from typing import Union from dataclasses import …
08 авг '18 в 02:31
4 ответа

Проверка подробных типов в классах данных Python

Python 3.7 не за горами, и я хотел протестировать некоторые из новых dataclass + печатать особенности. Получить подсказки для правильной работы достаточно легко, как с родными типами, так и с typing модуль: >>> import dataclasses >>&…
28 май '18 в 09:50
4 ответа

Запретить использование конструктора dafault извне класса

Рассмотрим следующий класс данных. Я хотел бы предотвратить создание объектов с использованием __init__ метод directclty. from __future__ import annotations from dataclasses import dataclass, field @dataclass class C: a: int @classmethod def create_…
01 сен '18 в 11:57
1 ответ

Приоритетная очередь с пользовательским классом типа получает TypeError(">" не поддерживается между экземплярами "PrioritizedItem" и "int" ",)?

Я делаю A* поиск и мне нужно хранить информацию в приоритетной очереди. Но я хочу, чтобы приоритетная очередь сравнивала только одно поле моих данных. Итак, я разработал класс PrioritizedItem для априорной очереди. Тем не менее, моя программа работа…