Python扩展返回的对象礼节

Eri*_*rik 1 python python-c-api

我正在编写一个python扩展来提供对Solaris kstat数据的访问(与运送perl库Sun :: Solaris :: Kstat的精神相同),我有一个关于有条件地返回列表或单个对象的问题.python用例看起来像:

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

正如它当前实现的那样,lookup()返回匹配的所有kstat对象的列表.第一种情况会产生一个对象列表(尽可能多的是CPU),第二种情况会完全指定一个kstat,并返回一个包含一个kstat的列表.

我的问题是,当只有一个匹配时,返回单个对象的形式很差,而当有多个匹配时,返回列表?

谢谢你的周到答案!我的python-fu很弱但是因为像你这样的人而变得越来越强大.

S.L*_*ott 7

"我的问题是,当只有一个匹配时,返回单个对象的形式很差,而当有很多匹配时,返回列表?"

返回不一致的类型是不好的形式.

返回一致类型:kstat列表.

大多数Pythonistas不喜欢使用type(result)它来确定它是kstat还是kstats 列表.

我们宁愿以简单,一致的方式检查列表的长度.

此外,如果长度取决于一条系统信息,则API方法可能会提供此元数据.

请查看DB-API PEP,获取有关如何处理类似查询的建议和想法.