एक कोड में, एक वर्ग होता है जिसमें 'goal_callback' नाम का एक फंक्शन होता है। फ़ंक्शन में, चर को .init उपसर्ग का उपयोग करके परिभाषित किया जाता है और अन्य को उपसर्ग के बिना सामान्य रूप से परिभाषित किया जाता है। मुझे पता है कि स्व. उपसर्ग का उपयोग चर को 'वर्ग चर' बनाने के लिए किया जाता है ताकि यह कक्षा के प्रत्येक कार्य के लिए सुलभ हो सके। तो कोड में, मेरे पास केवल एक फ़ंक्शन मौजूद है, क्या इससे कोई फर्क पड़ता है यदि हम स्वयं के साथ चर को परिभाषित करते हैं। उपसर्ग या नहीं। वास्तव में '_pub_takeoff' चर और 'takeoff_or_land' चर के बीच क्या अंतर होगा?

#! /usr/bin/env python

class CustomActionMsgClass(object):
  def __init__(self):
    self._as = actionlib.SimpleActionServer("action_custom_msg_as", CustomActionMsgAction, 
    self.goal_callback, False)
  def goal_callback(self, goal): 
    success = True
    r = rospy.Rate(1)
    self._pub_takeoff = rospy.Publisher('/drone/takeoff', Empty, queue_size=1)
    self._takeoff_msg = Empty()
    self._land_msg = Empty()
    # Get the goal word: UP or DOWN
    takeoff_or_land = goal.goal #goal has attribute named 'goal'. 
if __name__ == '__main__':
 rospy.init_node('action_custom_msg')
 CustomActionMsgClass()
 rospy.spin()
0
Hrushi 10 जिंदा 2020, 17:00

1 उत्तर

सबसे बढ़िया उत्तर

यहां ऑब्जेक्ट-लेवल और क्लास-लेवल वेरिएबल्स के लिए एक उदाहरण दिया गया है।

class A(object):
    Z = 3  # class variable. Upper-case is good code style for class-level variables
           # defined inside the class but outsize of it's methods
    def __init__(self):
        self.x = 1  # object variable
        y = 2       # local variable; it will lost after returning from the function
    def some_method(self):
        self.w = 4  # object variable too
        # Note that it is not recommended to define
        # object variables outside of __init__()

आपके कोड में _pub_takeoff वस्तु का परिवर्तनशील है; takeoff_or_land स्थानीय चर है।

0
Rugnar 10 जिंदा 2020, 17:04