我正在使用 Python 的 ctypes 来连接一个 C 库文件,运行ctypesgen来创建一个我可以导入的包装模块(例如,api.py)。碰巧许多 C 函数和宏的名称都以双下划线开头,Python 将其视为“私有”,并在用于类定义时调用名称修饰。
例如,这有效:
import api
api.__someGetter()
但这并不
import api
class MyClass(object):
i = api.__someGetter()
AttributeError: 'module' object has no attribute '_MyClass__someGetter'
这确实有效:
i = api.__dict__['__someGetter']()
但它对我来说似乎不是很优雅或易于阅读 - 代码将充满对字典键的调用。
有没有更好的方法来禁用或解决模块的名称修改?
(它是一个 C 库的事实可能与答案无关,但希望它解释了为什么我不能只更改命名约定。)