cyh772704446 2021-07-21 18:05 采纳率: 50%
浏览 35

python中的类为什么可以这样子直接调用啊,如下


import rospy
import cv2
from std_msgs.msg import String
from cv_bridge import CvBridge, CvBridgeError
from sensor_msgs.msg import Image
class fake_camera:
    def __init__(self):
        self.image_path = rospy.get_param('~image_path','bingda.png')
        self.image_pub = rospy.Publisher("/image_static", Image, queue_size=3)
        self.bridge = CvBridge() 
        self.pub_image()
    def pub_image(self):
        
        self.rate = rospy.Rate(30)
        print self.image_path
        self.cv_image = cv2.imread(self.image_path,1)
        rospy.loginfo("Start Publish Fake Camera Image")
        while not rospy.is_shutdown():
            img_msg = self.bridge.cv2_to_imgmsg(self.cv_image, "bgr8")
            img_msg.header.stamp = rospy.Time.now()
            self.image_pub.publish(img_msg)
            self.rate.sleep()

if __name__ == '__main__':
    try:
        rospy.init_node("fake_camera",anonymous=False)
        fake_camera()
    except rospy.ROSInternalException:
        pass

主函数里的fake_camera()不是一个类吗,怎么直接当成函数用了?

  • 写回答

2条回答 默认 最新

  • 关注

    类直接调用就是创建一个实例对象,执行类的构造函数__init__(),并返回创建的实例对象
    一般是
    obj = fake_camera()
    obj是返回的实例对象
    你这样
    fake_camera()
    是只执行了类的构造函数__init__(),没有接收返回的实例对象
    等同其它语言的 new fake_camera()
    只是python语言不需要 new 而已,语法上就和函数调用一样了

    评论

报告相同问题?

问题事件

  • 创建了问题 7月21日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向