首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >令人困惑的语法:“从smbus导入SMBus”

令人困惑的语法:“从smbus导入SMBus”
EN

Stack Overflow用户
提问于 2015-11-21 02:58:10
回答 1查看 627关注 0票数 1

我只是在学习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

代码语言:javascript
复制
from smbus import SMBus
b = SMBus(0)
b.read_byte_data(0x2f,0x58)

来自不同github示例的

代码语言:javascript
复制
import smbus
self.bus = smbus.SMBus(0)
EN

回答 1

Stack Overflow用户

发布于 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

当您导入一个类时,您也可以访问它的方法;但是您可以通过类或对象实例引用它们。因此,您不希望或不需要导入SMBusSMBus方法,因为在正常使用中,您总是将其称为b.read_byte_data,其中bSMBus实例,如第一个示例所示。

为了防止这一点不完全清楚,在Python中导入一些东西可以使它在当前的命名空间中可用。面向对象编程将方法封装在对象中;使用对象作为句柄访问其方法,因此只导入对象本身。好处之一是您的程序名称空间(您在名字基础上访问的东西的数量)保持相对干净,并且当您引用导入对象的方法和属性中的内容时,它是清晰而明确的--但相当简洁。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33840536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档