【发布时间】:2013-07-01 10:10:07
【问题描述】:
我正在尝试制作机器人套件。它的设计很简单,所以我使用属性,所以当用户更改参数时,属性方法会发送控制电机/伺服系统/任何东西的串行命令。
这是目前的代码,直接来自我在此处提出的上一个问题。
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)]
现在,它确实通过 getter 和 setter 函数更改变量,但是 getter 和 setter 中的打印永远不会被打印,因此如果我用串行命令替换它,我认为它不会也可以做任何事情,任何人都可以对此有所了解吗?
谢谢
更新:感谢使用伺服文件的帮助,这是发生了什么,第一个工作的三个场景,通过扩展,我假设接下来的两个更好的场景可以工作,但他们没有任何想法?
这行得通
import servo
class Robot(object):
def __init__(self):
self.servos = [servo.Servo(0, 0), servo.Servo(1,0), servo.Servo(2,0)]
R = Robot()
R.servos[1].angle = 25
这不是:
import servo
class Robot(object):
def __init__(self):
self.servos = [servo.Servo(0, 0), servo.Servo(1,0), servo.Servo(2,0)]
R = Robot()
left_servo = R.servos[1].angle
left_servo = 25
这个也不行
import servo
class Robot(object):
def __init__(self):
self.servos = [servo.Servo(0, 0).angle, servo.Servo(1,0).angle, servo.Servo(2,0).angle]
R = Robot()
R.servo[1] = 25
【问题讨论】:
-
python有私有类吗?即:在另一个类中定义的类(类型)没有外部类可以知道存在?我猜你的意思是一个带有私有变量的类?注意:您是否检查过您的程序是否可以成功输出任何打印语句? (也许标准输出被重定向了?)
标签: python properties serial-port robot