Python Extensão Devolvido Etiquette Objeto
-
06-09-2019 - |
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ê.
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.