首页 > 解决方案 > 如何迭代类方法?

问题描述

下面是一个用于计算每分钟按钮点击次数的脚本 - 作为实施霍尔效应传感器以测量电机转速的试运行。它确实以令人满意的方式工作。但是,我很想在 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)
 

标签: pythonoopmethodswhile-loopcounter

解决方案


如果我理解您想要正确执行的操作,那么下面的代码应该会对您有所帮助。我定义了一个电机类,并在类中创建了一个方法来计算 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()

这是我能用你提供的信息做的最好的事情。


推荐阅读