Создать класс данных для программного вводаPython

Программы на Python
Ответить
Anonymous
 Создать класс данных для программного ввода

Сообщение Anonymous »

Как я могу выразить

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

@dataclass
class Measurements:
width: int
height: int
head_left: int
head_right: int
head_width: int
head_top: int
head_bottom: int
head_height: int
space_above_head: int
space_below_chin: int
eyes_to_bottom_edge: int
eyes_to_top_edge: int

@dataclass
class Constraints:
width: Bounds = (None, None)
height: Bounds = (None, None)
head_left: Bounds = (None, None)
head_right: Bounds = (None, None)
head_width: Bounds = (None, None)
head_top: Bounds = (None, None)
head_bottom: Bounds = (None, None)
head_height: Bounds = (None, None)
space_above_head: Bounds = (None, None)
space_below_chin: Bounds = (None, None)
eyes_to_bottom_edge: Bounds = (None, None)
eyes_to_top_edge: Bounds = (None, None)
без такого большого дублирования?
Я пробовал

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

Constraints = dataclasses.make_dataclass('Constraints', [(f.name, Bounds, dataclasses.field(default=(None, None))) for f in dataclasses.fields(Measurements)])
Но теперь, поскольку я определил ограничения таким образом, я получаю эту ошибку ввода, когда использую Constraint в качестве типа:

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

def crop(image: npt.NDArray, constraints: Constraints) -> npt.NDArray:
^
Переменная не разрешена в выражении типа

Может ли кто-нибудь придумать лучшее решение ?

Подробнее здесь: https://stackoverflow.com/questions/793 ... mmatically
Ответить

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

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

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

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

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