【发布时间】:2015-05-04 22:55:19
【问题描述】:
给定 Python 中的类对象,我如何确定该类是否在扩展模块(例如 c、c++、cython)中定义,而不是在标准 Python 中定义?
inspect.isbuiltin 为扩展模块中定义的函数返回True,为python中定义的函数返回False,但不幸的是,它对类没有相同的行为——它返回False 两种类。
(这里更大的目标是我们有一个系统,它可以根据解析文档字符串和它们的__init__ 函数的签名为一组类生成命令行 API。这个系统对于 cython 中定义的类会失败,因为inspect.getargspec 在这些类上无法正常工作,所以我正在尝试找出解决方法)
【问题讨论】:
-
你可以
try一些在 Python 中未实现的对象(例如inspect.getsourcelines)会失败并捕获错误。 -
您具体需要知道什么?
-
@IgnacioVazquez-Abrams:我在问题中添加了对更大目标的描述。
标签: python cython python-internals python-extensions function-signature