Python扩展返回的对象礼节

时间:2009-06-02 16:39:04

标签: 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很弱但是因为像你这样的人而变得越来越强大。

1 个答案:

答案 0 :(得分:7)

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

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

返回一致类型:kstat列表。

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

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

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

请查看DB-API PEP,了解有关如何处理类似查询的建议和想法。