определение параметра для класса в python - PullRequest
0 голосов
/ 11 января 2020

Вот код и ошибка, которую я получаю при запуске программы. Кто-нибудь может объяснить, какую ошибку я делаю? Также хорошо ли вызывать функцию класса в конструкторе, как я это сделал?

#!/usr/bin/env python

import rospy

class move_turtlebot(message):
    def __init__(self):
          self.pub=rospy.Publisher('/cmd_vel', Twist, queue_size=1)
          self.vel=Twist()
          rospy.loginfo("initiated!!")
         self.move(message)
    def move(self,message):
          if message=="STOP":
              rospy.loginfo("inside stop")
              self.vel=Twist()
              self.pub.publish(vel)
          elif message=="LEFT":
        #rest of code continues 
if __name__=="__main__":

   rospy.init_node('move_turtlebot')
   rospy.loginfo("here!")

   while not rospy.is_shutdown():
       ahead=move_turtlebot("FORWARD")

Ошибка: NameError: имя 'message' не определено в строке определения класса

Ответы [ 2 ]

1 голос
/ 11 января 2020

В своем определении класса вы используете сообщение:

class move_turtlebot ( message ): <--- HERE </p>

сообщение не определено, если вы хотите использовать сообщение в своем конструкторе, добавить его в вашу __init__ функцию следующим образом:

def __init__(self, message)

также я заметил, что в последней строке вашей функции init используются разные отступы, если они одинаковые в вашем код, измените его.

Надеюсь, это поможет

1 голос
/ 11 января 2020
class move_turtlebot(message): # this means inheritance from a class message which u dont have or didnt define

Чтобы у класса были параметры, они могут быть определены в конструкторе следующим образом (хотя есть варианты):

class move_turtlebot:
    def __init__(self,message):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...