我使用Python中的DroneKit API来使用配套计算机控制无人机。我试图创建一个类,它继承自DroneKit中的Vehicle类。这个类的目的是为了覆盖DroneKit中存在的一些方法,这些方法不能与PX4一起使用,也可以添加我自己的一些方法,同时仍然可以访问默认情况下可用的所有方法。
问题是你不能直接使用Dronekit创建一个Vehicle对象 - 你调用connect()函数返回一个Vehicle对象。
我的问题是,如何创建班级实例?
接受的方法似乎是调用父 init (),如下所示:
class Vehicle(dronekit_Vehicle):
def __init__(self, stuff):
dronekit_Vehicle.__init__(stuff)
但就像我说的那样,你不能直接在Dronekit中创建一个Vehicle对象,例如: vehicle =车辆(东西),但是通过vehicle = connect(stuff),最终返回一个Vehicle对象,但也会做一堆其他东西。
我能想到的唯一方法是
class Vehicle(dronekit_Vehicle):
def __init__(self, stuff):
self.vehicle = connect(stuff)
然后必须使用self.vehicle.function()来访问默认的DroneKit命令和属性,这是一个巨大的痛苦。
我如何使这项工作?
答案 0 :(得分:2)
定义对象的方式与connect
无关。致电connect
为merely some convenience function that wraps some logic around the object creation:
def connect(...):
handler = MAVConnection(...)
return Vehicle(handler)
Vehicle.__init__()
being defined as
def __init__(self, handler):
super(Vehicle, self).__init__()
self._handler = handler
...
只要你在构造函数中传递处理程序:
class MyVehicle(dronekit.Vehicle):
def __init__(self, handler):
super(MyVehicle, self).__init__(handler)
您的课程将使用connect()
:
connect(..., vehicle_class=MyVehicle)