Python库模块实现

Python库模块实现,python,Python,我正在尝试编写并理解一些python代码,我一直在努力实现python库是如何导入的。让我描述一下我的情况 为了在我的(x86)笔记本电脑中运行一些单元测试,我试图模拟一个只支持raspberry pi的python库(RPi.GPIO)。为了实现这一点,我认为我应该定义与GPIO类相同的函数和变量,并让所有函数emtpy(justpass)。所以我看了一下RPi.GPIO模块 虽然我认为我会在那里找到GPIO类方法的实际实现,但实际上我看到它们的主体是空的。例如: def add_event_

我正在尝试编写并理解一些python代码,我一直在努力实现python库是如何导入的。让我描述一下我的情况

为了在我的(x86)笔记本电脑中运行一些单元测试,我试图模拟一个只支持raspberry pi的python库(RPi.GPIO)。为了实现这一点,我认为我应该定义与GPIO类相同的函数和变量,并让所有函数emtpy(justpass)。所以我看了一下RPi.GPIO模块

虽然我认为我会在那里找到GPIO类方法的实际实现,但实际上我看到它们的主体是空的。例如:

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。谢谢您提供的信息!