python - 如何迭代类方法?
问题描述
下面是一个用于计算每分钟按钮点击次数的脚本 - 作为实施霍尔效应传感器以测量电机转速的试运行。它确实以令人满意的方式工作。但是,我很想在 OOP 模式下使用类和方法来实现它。我的理解是,类在循环使用它们的方法时相当“过敏”,只返回最后一个值。任何建议将不胜感激。
import keyboard as kb
from time import time
#4 clicks equal 1 rev(olution)/the sampling duration is 5 revs
while (1):
revs = 0
t_start = time()
while revs < 5:
clicks = 0
while clicks < 4:
kb.wait('k')
clicks += 1
revs += 1
t_stop = time()
dt = t_stop - t_start
rpm = revs * 60 / dt
print(rpm)
解决方案
如果我理解您想要正确执行的操作,那么下面的代码应该会对您有所帮助。我定义了一个电机类,并在类中创建了一个方法来计算 rpm 并更新对象的 rpm 属性。
class Motor:
rpm = 0.0
def calculate_rpm(self):
revs = 0
t_start = time()
while revs < 5:
clicks = 0
while clicks < 4:
kb.wait('k')
clicks += 1
revs += 1
t_stop = time()
dt = t_stop - t_start
self.rpm = revs * 60 / dt
motor.calculate_rpm()
从这里开始,可以在您的 while 循环中放置一行,并将在 while 循环的每次迭代中更新电机对象的 rpm 属性的值。从这里,您可以使用 motor.rpm 上可访问的数据做任何您想做的事情。
不要忘记初始化电机对象motor = Motor()
这是我能用你提供的信息做的最好的事情。
推荐阅读
- python - 如何编辑多个excel表的名称?
- android - 为什么应用程序需要 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限来解码位图?
- javascript - 将我的 FBX 文件转换为 .gltf 后,模型非常小,为什么?
- .net - 如何使 OAuth2 在 .net 上通过多因素身份验证适用于 Azure Active Directory?
- android - react-native run-android androidPath= {android 文件夹的路径}
- c# - 如何替换在下拉列表中选择的 html 页面中的 url,其中包含存储在应用数据中的所有 html 页面的列表
- javascript - Shopify 不执行 jQuery(地理位置脚本)
- laravel - 我如何在 Laravel 中用 faker 播种随机 id 或 null ?
- talend - 来自两个输入文件的 Talend 过滤器
- java - 关闭或停止后重新加载弹簧上下文