Python库模块实现
我正在尝试编写并理解一些python代码,我一直在努力实现python库是如何导入的。让我描述一下我的情况 为了在我的(x86)笔记本电脑中运行一些单元测试,我试图模拟一个只支持raspberry pi的python库(RPi.GPIO)。为了实现这一点,我认为我应该定义与GPIO类相同的函数和变量,并让所有函数emtpy(justpass)。所以我看了一下RPi.GPIO模块 虽然我认为我会在那里找到GPIO类方法的实际实现,但实际上我看到它们的主体是空的。例如:Python库模块实现,python,Python,我正在尝试编写并理解一些python代码,我一直在努力实现python库是如何导入的。让我描述一下我的情况 为了在我的(x86)笔记本电脑中运行一些单元测试,我试图模拟一个只支持raspberry pi的python库(RPi.GPIO)。为了实现这一点,我认为我应该定义与GPIO类相同的函数和变量,并让所有函数emtpy(justpass)。所以我看了一下RPi.GPIO模块 虽然我认为我会在那里找到GPIO类方法的实际实现,但实际上我看到它们的主体是空的。例如: def add_event_
def add_event_detect(*args, **kwargs): # real signature unknown
"""
Enable edge detection events for a particular GPIO channel.
channel - either board pin number or BCM number depending on which mode is set.
edge - RISING, FALLING or BOTH
[callback] - A callback function for the event (optional)
[bouncetime] - Switch bounce timeout in ms for callback
"""
pass
所以问题是,这些功能的实际实现在哪里?这个空的机构有什么意义?(仅包括pass关键字和文档)此方法是如何重写的,由谁重写的,并获得所需的功能?它应该是C函数的包装器。 如果您想像Zizouz212所提到的那样覆盖
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu导入
,请使用导入挂钩
以下是描述导入挂钩的PEP:
它应该是C函数的包装器。 如果您想像Zizouz212所提到的那样覆盖
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu导入
,请使用导入挂钩
以下是描述导入挂钩的PEP:
添加事件检测的实际实现是在本地C代码中,您可以在本地virtualenv文件夹中找到(或者,如@Jean Jung在RPi.GPIO的注释中所示) Python模块可以完全用Python编写,但扩展通常用C编写,如中所述
您看到的存根实现(其实现是pass)是基于本机实现生成的。我怀疑您正在使用PyCharm,它会自动生成这些存根实现。添加事件检测的实际实现是在本机C代码中,您可以在本地virtualenv文件夹中找到(或者,正如@Jean Jung在评论中所指出的,RPi.GPIO Python模块可以完全用Python编写,但扩展通常用C编写,如中所述
您看到的存根实现(其实现只是
pass
)是基于本机实现生成的。我怀疑您使用的是PyCharm,它会自动生成这些内容。Python有一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>方法,这是在导入某些内容时调用的方法。您可能需要覆盖该方法才能获取事件。以下是相关文档:可能是源:是将C库写入Python的可能性,如果您熟悉Java,它看起来与JNI开发类似。Python有一个\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>方法,这是在导入某个东西时调用的方法。您可能需要覆盖它才能获得事件。以下是相关文档:可能是可以将C libs写入Python,如果您熟悉Java,它看起来类似于JNI开发。是的,我正在使用PyCharm。谢谢您提供的信息!是的,我正在使用PyCharm。谢谢您提供的信息!