Question

Je suis en train d'écrire une extension python pour fournir un accès aux données de Solaris (dans le même esprit que la bibliothèque Perl expédition Sun :: Solaris :: Kstat) et j'ai une question sur conditionnellement retourner une liste ou un seul objet. L'utilisation de python cas ressemblerait à quelque chose comme:

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

Comme il est actuellement mis en œuvre, retourne recherche () une liste de tous les objets qui kstat correspondance. Le premier cas se traduirait par une liste d'objets (autant que il y a des unités centrales) et le second appel spécifie un kstat complètement et renverrait une liste contenant un kstat.

Ma question est-il forme pauvre de retourner un seul objet quand il n'y a qu'un seul match, et une liste quand il y a beaucoup?

Merci pour la réponse réfléchie! Mon python-fu est faible, mais de plus en plus forte en raison de gens comme vous.

Était-ce utile?

La solution

« Ma question est-il forme pauvre de retourner un seul objet quand il n'y a qu'un seul match, et une liste quand il y a beaucoup? »

Il est la mauvaise forme de retour types incompatibles.

Retour d'un type uniforme. Liste des kstat

La plupart Pythoneux n'aiment pas utiliser type(result) pour déterminer si elle est une kstat ou une liste de kstats.

Nous préférerions vérifier la longueur de la liste d'une manière simple et cohérente.

En outre, si la longueur dépend d'un élément d'information du système, peut-être une méthode API pourrait fournir ces métadonnées.

Regardez PEP DB-API pour obtenir des conseils et des idées sur la façon dont pour gérer les choses comme la requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top