Pergunta

Eu estou escrevendo uma extensão de python para fornecer acesso ao Solaris kstat de dados (com o mesmo espírito como a biblioteca perl transporte Sun :: Solaris :: kstat) e eu tenho uma pergunta sobre condicionalmente retornar uma lista ou um único objeto. O caso de uso python seria algo parecido com:

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

Como é implementado atualmente, lookup () retorna uma lista de todos os objetos kstat que jogo. O primeiro caso resultaria em uma lista de objetos (como muitos, pois há CPUs) e a segunda chamada especifica um único kstat completamente e iria retornar uma lista contendo um kstat.

A minha pergunta é má forma para retornar um único objeto quando há apenas um jogo, e uma lista quando há muitos?

Obrigado pela resposta pensativo! Meu python-fu é fraco, mas cada vez mais forte devido a pessoas como você.

Foi útil?

Solução

"A minha pergunta é má forma para retornar um único objeto quando há apenas um jogo, e uma lista quando há muitos?"

É má forma para retornar tipos inconsistentes.

retornar um tipo consistente:. Lista de kstat

A maioria Pythonistas não gostam de usar type(result) para determinar se é uma kstat ou uma lista de kstats.

Nós preferimos verificar o comprimento da lista de uma forma simples, maneira consistente.

Além disso, se o comprimento depende de um pedaço de informações do sistema, talvez um método API poderia fornecer metadados.

DB-API PEP para conselhos e ideias sobre como a alça de consulta semelhante coisas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top