1

我正在编写一个 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很弱,但正在变得更强大。

4

1 回答 1

7

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

返回不一致的类型是一种糟糕的形式。

返回一致的类型:kstat 列表。

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

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

此外,如果长度取决于一条系统信息,也许 API 方法可以提供此元数据。

查看DB-API PEP以获取有关如何处理类似查询的事情的建议和想法。

于 2009-06-02T17:13:49.817 回答