2009-06-02 2 views
1

필자는 Solaris kstat 데이터에 대한 액세스를 제공하기 위해 Python 확장을 작성하고 있습니다 (배송 펄 라이브러리 Sun :: Solaris :: Kstat과 같은 정신으로). 조건부로 목록을 반환하거나 단일 개체.)이 현재 구현 것으로파이썬 확장 반환 된 객체 에티켓

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

, 조회 (이 일치하는 모든 kstat를 개체의 목록을 반환 파이썬 사용 사례는 같을 것이다. 첫 번째 경우는 객체 목록 (CPU만큼 많음)이되고 두 번째 호출은 하나의 kstat를 완전하게 지정하고 하나의 kstat가 포함 된 목록을 반환합니다.

내 질문에 단 하나의 일치가있을 때 단일 개체를 반환하는 것이 좋지 않은가?

사려 깊은 대답에 감사드립니다. 내 파이썬 푸는 약하지만 너와 같은 사람들 때문에 더 강해지고있다.

+0

확장 모듈을 작성하는 맥락에서이 질문을하는 경우에도 순수 Python 함수를 작성하면 대답은 동일합니다. – Miles

답변

7

"내 질문은 단 하나의 일치가있을 때 단일 개체를 반환하는 것이 좋지 않은가?

일관성없는 유형을 반환하는 것은 좋지 않습니다.

일관된 유형을 반환합니다. kstat의 목록.

대부분의 Pythonist는 type(result)을 사용하여 kstat 또는 kstats 목록을 확인하는 것을 좋아하지 않습니다.

우리는 간단하고 일관된 방식으로 목록의 길이를 확인하려고합니다.

또한 길이가 시스템 정보에 따라 다르면 API 메소드가이 메타 데이터를 제공 할 수 있습니다.

DB-API PEP에서 쿼리와 유사한 것들을 처리하는 방법에 대한 조언과 아이디어를 찾아보십시오.

+1

나는 당신의 대답이 나쁜 형태라고 주장 할 때 대답은 "그렇다"가 아니라 "아니다"라고 대답해야한다고 믿는다. –

+0

+1 완전히 좋습니다. 특히 DB-API 링크의 경우 –