我只是在学习Python,我对smbus导入和实例(?)的语法感到困惑。我用的是杰西的RasPi。
在下面的示例中,每个示例似乎都引用了一个函数(?)名为"SMBus“,它指定将用于此通信的硬件总线中的哪一个。
我对Python的理解是,大写很重要,这使得SMBus与smbus不同。我的困惑有两方面:
1)我找不到对smbus函数"SMBus“的任何引用。
2)在erazor区域示例代码中,我认为只有来自SMBus的smbus函数被导入,而smbus中的所有其他函数都不可用。
有人能解释我的想法会误入歧途吗?
谢谢
JonRob
以下两种结构都是来自互联网的:
来自 http://wiki.erazor-zone.de/wiki:linux:python:smbus:doc
from smbus import SMBus
b = SMBus(0)
b.read_byte_data(0x2f,0x58)或
来自不同github示例的
import smbus
self.bus = smbus.SMBus(0)发布于 2015-11-21 07:57:53
这个模块的源代码是用C编写的。
我无法连接到http://lm-sensors.org/,只能在https://sources.debian.net/src/i2c-tools/3.1.1-1/py-smbus/smbusmodule.c/的Debian包源代码中搜索PyMethodDef。
当您导入一个类时,您也可以访问它的方法;但是您可以通过类或对象实例引用它们。因此,您不希望或不需要导入SMBus的SMBus方法,因为在正常使用中,您总是将其称为b.read_byte_data,其中b是SMBus实例,如第一个示例所示。
为了防止这一点不完全清楚,在Python中导入一些东西可以使它在当前的命名空间中可用。面向对象编程将方法封装在对象中;使用对象作为句柄访问其方法,因此只导入对象本身。好处之一是您的程序名称空间(您在名字基础上访问的东西的数量)保持相对干净,并且当您引用导入对象的方法和属性中的内容时,它是清晰而明确的--但相当简洁。
https://stackoverflow.com/questions/33840536
复制相似问题