Я генерирую последовательности простых команд в Python, и команды имеют различное количество полей bool, float и int с различными именами.
Я представляю их как классы NamedTuple, например, команда перемещения -
class G1(NamedTuple):
"""
Move command with speed in mm/s
"""
x: float = None
y: float = None
z: float = None
speed: float = None
absolute: bool = True
Это все конкретные примеры Gcodes, который является названием языка команд, поэтому я хотел бы иметь тип с именем Gcode, где issubclass(G1, Gcode) == True
. Затем я мог бы напечатать подсказку для различных функций как List[Gcode]
и описать некоторые методы, которые должны быть общими для всех G-кодов.
Я пытался просто определить
class Gcode(NamedTuple):
pass
class G1(Gcode):
x: float = None
...
Однако конструкторы G1 больше не работают должным образом.
Извините, если это дубликат, мне не повезло в поиске, потому что есть много вопросов о создании подклассов NamedTuples для добавления полей к ним, а это не то, что я пытаюсь сделать.