Мне было поручено реализовать интерфейс Python для нашего программного обеспечения для моделирования.
Я извиняюсь, но это мое первое знакомство с питоном, так что это медленный процесс.
Я работал в CPython
Вот моя проблема.
Если пользователь вводит:
a = model_123456 (например),
Я хотел бы вернуть соответствующий объект.
Проблема в том, что эти объекты динамически создаются в программном обеспечении.
Я не хочу заполнять глобальные () дикты потенциально тысячами этих объектов,
если они никогда не доступны.
Я не хочу реализовывать его как метод, например: a = getmodel (123456)
поскольку мы стремимся к краткости, делая большинство доступа через атрибуты члена, а не методы.
Я изучал различные решения, но ни одно из них не кажется применимым или понятным (например, "gettr on the module")
Я думаю что мне нужно сделать, это создать словарь в моем модуле верхнего уровня, из которого я могу переопределить метод getitem?
Если это так, у меня возникли проблемы с выяснением, как это сделать в CPython.
Например: m = PyModule_Create (& tdmodule)
Вопрос 1: Это уже возвращает объект с установленным tp_dict.
Как иначе установить / переопределить этот слот?
Вопрос 2. Как переопределить функцию getitem объекта PyDict в CPython (или создать словарь с таким же атрибутом)?
Нужно ли создавать словарь с помощью специального метода getsubscript для Mapping или я могу просто установить setattr для setitem?
Опять мои извинения, если этот вопрос звучит запутанным и делает много неправильных предположений, вероятно, это так.
Спасибо за любые разъяснения,
Роб.