Skip to main content
 首页 » 编程设计

Python 扩展返回对象礼仪

2025年05月04日15jpfss

我正在编写一个 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 很弱,但由于像你这样的人而变得更强。

请您参考如下方法:

“我的问题是,当只有一个匹配项时返回单个对象,而当有多个匹配项时返回列表,这是一种糟糕的形式吗?”

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

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

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

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

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

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