Pregunta

Estoy escribiendo una extensión de Python para proporcionar acceso a los datos de Solaris kstat (en el mismo espíritu que la biblioteca Perl envío de Sun Solaris :: :: Kstat) y tengo una pregunta sobre condicionalmente devolver una lista o un solo objeto. El caso de uso pitón sería algo como:

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

A medida que se implementa en la actualidad, las operaciones de búsqueda () devuelve una lista de todos los objetos que coinciden con kstat. El primer caso resultaría en una lista de objetos (tantos como hay CPUs) y la segunda llamada especifica un único kstat completamente y volvería una lista que contiene uno kstat.

Mi pregunta es mala forma para devolver un solo objeto cuando sólo hay un partido, y una lista cuando hay muchos?

Gracias por la respuesta reflexiva! Mi pitón-fu es débil, pero cada vez más fuerte debido a la gente como usted.

¿Fue útil?

Solución

"Mi pregunta es mala forma para devolver un solo objeto cuando sólo hay un partido, y una lista cuando hay muchos?"

Es mala forma para volver tipos inconsistentes.

Vuelta un tipo consistente:. Lista de kstat

La mayoría de Pythonistas no les gusta usar type(result) para determinar si es un kstat o una lista de kstats.

Preferimos comprobar la longitud de la lista de una manera sencilla y consistente.

Además, si la longitud depende de una pieza de información del sistema, tal vez un método de API podría proporcionar estos metadatos.

PEP DB-API consejos e ideas sobre cómo para manejar las cosas de consulta similar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top