名称'self'未在Python中定义

时间:2013-12-05 04:49:11

标签: python-2.7

任何人都可以告诉我我需要做些什么来解决“名字'自我'未定义”错误我正在下面确定的线上?:

class FulfillWhseOrderAction(object):

    def __init__(self, name):
        self._action_name = name
        self._as = actionlib.SimpleActionServer(self._action_name, pkg_commands.msg.FulfillWhseOrderAction, execute_cb=self.execute_cb)
        self._as.start()

    # *** ERROR HAPPENING HERE: ***
    rospy.loginfo('%s: Executing warehouse order' % self._action_name)

if __name__ == '__main__':
    rospy.init_node('node_ReceiveWhseOrder')
    FulfillWhseOrderAction(rospy.get_name())
    rospy.spin()

1 个答案:

答案 0 :(得分:0)

self是发送到__init__函数的变量(称为对象)。所以你无法从函数外部访问它。将错误发生线缩进到函数内部。

class FulfillWhseOrderAction(object):

    def __init__(self, name):
        self._action_name = name
        self._as = actionlib.SimpleActionServer(self._action_name,  pkg_commands.msg.FulfillWhseOrderAction, execute_cb=self.execute_cb)
        self._as.start()

    # *** ERROR HAPPENING HERE: ***
        rospy.loginfo('%s: Executing warehouse order' % self._action_name)

    if __name__ == '__main__':
        rospy.init_node('node_ReceiveWhseOrder')
        FulfillWhseOrderAction(rospy.get_name())
        rospy.spin()

这样可以解决问题