我希望我能够解释得这么好!
我正在创建一个机器人工具包,它将命令从pi发送到arduino。目前我只是用它来控制伺服器,我有测试代码可以工作。然而,作为儿童,我想让它尽可能简单易用。
目前,这与我的代码类似:
class robot(object)
def __init___(self):
self.servos = [0,0,0,0]
def set_servo(self,which_servo,what_position):
#sends serial data
#changes servo position in servos[]
目前我必须使用函数robot()。set_servo()来设置伺服和机器人()。伺服[0]来读取位置。
我希望能做的是。能够设置位置并通过简单地执行
来关键地发送串行数据robot().servo[0] = 10
然后这将改变servo [0]的值(显然它会这样做),但也会向我的arduino发送一个串行命令。重要的是,这一切必须包装在Robot()对象中,以便最终用户不必运行任何其他功能,以检查伺服列表是否已经发生变化。
答案 0 :(得分:0)
如果伺服由property objects组成,这只是实现一个合适的setter的问题。那就是你不应该用整数来初始化伺服,而是使用合适的属性对象。那就是:引入类伺服,如
class Servo(object):
def __init__(self, which_servo, angle = 0):
self._angle = angle;
self._servo_no = which_servo
def get_angle(self):
return self._angle
def set_angle(self, value):
self._angle = value
print "replace this print statement with the code to set servo, notice that this method knows the servo number AND the desired value"
def del_angle(self):
del self._angle
angle = property(get_angle, set_angle, del_angle, "I'm the 'angle' property.")
然后像
那样初始化你的机器人class robot(object)
def __init___(self):
self.servos = [Servo(0), Servo(1), Servo(2), Servo(3)]