Ich steh mal wieder vor einem Problem. Ich möchte 2 Methoden einer Klasse "immer" aufrufen. Da in dieser API keine "automatische" Connect oder Disconnect.
Mein Beispiel Code in abgewandelter Form. Nicht Lauffähig und wahrschein völlig dämlich
Code: Alles auswählen
import anki_vector
from anki_vector.util import distance_mm, speed_mmps, degrees
from functools import partialmethod
class Vector:
def __init__(self, serial):
self.serial = serial
self.robot = anki_vector.Robot(serial=self.serial)
self._alive = False
def start_fast_immer_diese(func):
self.connect()
func()
self.terminate_connection()
self.wie_rufe_ich_dich_auf = partialmethod(start_fast_immer_diese(), func="?")
def connect(self):
self.robot.connect()
def terminate_connection(self):
self.robot.disconnect()
def say_text(self, msg):
self.g = partialmethod(self.connect(),)
self.robot.behavior.say_text(msg)
def vector_battery_status(self):
return self.robot.get_battery_state()
if __name__ == '__main__':
test = Vector()
test.say_text("lala") # aber vorher start_fast_immer_diese(func)
test.vector_battery_status() # ohne die innerfunction <- läuft
Allerdings platz mir da der Kopf...Ich hab diese Thema nicht wirklich durchdrungen.
Bin ich auf dem totalen Holzweg?
Oder wie würdet ihr das lösen? Ich hab auch an eine Vererbung gedacht, wo die Subclass mit oder ohne die innerfunction läuft. Allerdings hab ich auch noch nicht verstanden wie ich die jeweilige Methode anspreche ohne dass der Methodenaufruf "länger" wird. "test.vectorsubclass.mit_innerfunction.saytext()
Beste Grüße aus der großen Stadt
Nachtrag: Kann ich Methoden mit with ausstatten?
Code: Alles auswählen
def say_text(self, msg):
with anki_vector.Robot(serial=self.serial) as self.robot:
self.robot.behavior.say_text(msg)