Вопрос

Я пишу расширение Python для обеспечения доступа к данным kstat Solaris (в том же духе, что и библиотека Perl Sun::Solaris::Kstat), и у меня есть вопрос об условном возврате списка или одного объекта.Вариант использования Python будет выглядеть примерно так:

    cpu_stats = cKstats.lookup(module='cpu_stat')
    cpu_stat0 = cKstats.lookup('cpu_stat',0,'cpu_stat0')

В текущей реализации функция поиска() возвращает список всех совпадающих объектов kstat.В первом случае результатом будет список объектов (столько, сколько процессоров), а второй вызов полностью задает один kstat и возвращает список, содержащий один kstat.

Мой вопрос: это плохой тон — возвращать один объект, когда есть только одно совпадение, и список, когда их много?

Спасибо за вдумчивый ответ!Мой питон-фу слаб, но становится сильнее благодаря таким людям, как ты.

Это было полезно?

Решение

«Мой вопрос: это плохой тон — возвращать один объект, когда есть только одно совпадение, и список, когда их много?»

Возвращать противоречивые типы — плохой тон.

Верните согласованный тип:Список кстат.

Большинство питонистов не любят использовать type(result) чтобы определить, является ли это kstat или списком kstat.

Мы предпочитаем проверять длину списка простым и последовательным способом.

Кроме того, если длина зависит от части системной информации, возможно, метод API может предоставить эти метаданные.

Посмотри на DB-API PEP за советы и идеи о том, как обрабатывать вещи, подобные запросам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top