Я работаю над структурой анализа структурированных данных, основанной на потоковой передаче данных между узлами .В настоящее время узлы реализованы как подклассы корневого класса Node, предоставляемого платформой.Для каждого класса / фабрики узлов мне нужны метаданные, такие как список атрибутов узла, их описание, вывод узла.Метаданные могут быть обоими: для конечных пользователей во внешнем приложении или для использования в программировании - некоторыми другими инструментами управления потоками.В будущем их будет больше.
(обратите внимание, что я только начал изучать python при написании этого кода)
В настоящее время метаданные представлены в переменной класса
class AggregateNode(base.Node):
"""Aggregate"""
__node_info__ = {
"label" : "Aggregate Node",
"description" : "Aggregate values grouping by key fields.",
"output" : "Key fields followed by aggregations for each aggregated field. Last field is "
"record count.",
"attributes" : [
{
"name": "keys",
"description": "List of fields according to which records are grouped"
},
{
"name": "record_count_field",
"description": "Name of a field where record count will be stored. "
"Default is `record_count`"
}
]
}
Больше примеров можно найти здесь .
Я чувствую, что это можно сделать намного чище.Есть одно ограничение: поскольку узлы являются пользовательскими классами подклассов, должно быть минимальное вмешательство в потенциальные будущие имена атрибутов.
Я собирался разделить текущую node_info .Он должен был быть закрытым для фреймворка, но теперь я понимаю, что он имеет гораздо более широкое применение.Я думал об использовании атрибутов node_: будет иметь общее пространство имен атрибутов, не требующее слишком большого количества имен из потенциальных пользовательских атрибутов узла.
Мой вопрос: каков наиболее распространенный способ предоставления таких метаданных в программах на Python?Отдельная переменная со словарем?Несколько переменных, по одной для каждого атрибута метаданных?(это будет противоречить ограничению) Пользовательский класс / структура?Использовать какой-то префикс, например, node_ * и использовать несколько переменных?