python - 一个对象的一个实例如何影响该对象的所有其他实例
问题描述
我帮助维护一个 python机器人接口库。该库与一些嵌入式处理器接口,其中包含我们无法修补的错误,因此必须在我们的 python API 中解决问题。
错误是如果你这样做:
R.gpio[1].mode = OUTPUT
R.gpio[2].mode = OUTPUT
R.gpio[3].mode = OUTPUT
R.gpio[4].mode = OUTPUT
然后稍后
R.gpio[2].mode = INPUT
GPIO 的 2 设置为 INPUT,但也设置为 3 和 4。如果所有 GPIO 每次都按顺序设置,嵌入式处理器就可以了。
我目前的想法是在 python 中缓存 GPIO 的当前状态,然后每次更新每个 gpio 的模式以发送信号以按顺序更新它们,因此即使您更改 2,1 也会更新,然后 2 再更新 3 等等。
我可以:
在 R.gpio 的(继承自
list
)上有一个方法,当这种情况发生时会以某种方式被调用,但是我怎么知道什么时候mode
在包含的对象上设置?我只知道__getattr__
被叫了。将类的引用传递给列表中
GPIOList
的每个GPIO
对象,然后调用GPIOList
该类的方法来更新每个方法。但是我已经耦合了封装对象和封装对象的接口。
有没有一种蟒蛇方式(也许classmethods
)来避免这些捕获中的任何一个?
解决方案
推荐阅读
- c# - C# 访问 ADODB 中的第一个 Recorset 项
- node.js - 通过没有端口的链接打开 Angular Universal 应用程序
- pg-promise - 为什么我们应该使用 batch() 而不是 Promise.all?
- c++ - C++ 中更智能的包含保护可在不同的命名空间中多次包含标头
- c - 如何在 C 中现有字节数组的末尾附加另一个 HEX 值
- nearprotocol - 托管和多重签名合约
- azure - 如何通过 ARM 创建应用洞察仪表板
- javascript - 执行没有响应的python函数 - Django
- python - 如何找到信号周期(自相关与快速傅立叶变换与功率谱密度)?
- c# - 您的目标项目“x”与您的迁移程序集“xx”不匹配。更改您的目标项目或更改您的迁移程序集