Ich möchte die MonkeyDevice-Klasse der Monkeyrunner-API erweitern. Meine abgeleitete Klasse sieht so aus.
%Vor% Wenn ich test_dev = TestDevice(serial)
von einem anderen Modul anrufe, erhalte ich den folgenden Fehler:
Was mache ich falsch?
Vielen Dank im Voraus!
Es scheint, dass Sie eine MonkeyDevice
-Instanz nicht direkt initialisieren können, ohne eine Factory-Funktion waitForConnection
aufzurufen. Stattdessen müssen Sie self
in Ihrer Funktion __new__()
zuweisen, damit MonkeyDevice
die Instanz als von IMonkeyDevice
erben erkennt, bevor Sie sie __init__
Beispiel:
%Vor% Es scheint, dass Sie versuchen, eine MonkeyDevice
-Instanz, die durch den Factory-Aufruf waitForConnection
zurückgegeben wurde, zu erweitern.
Wenn Sie versuchen, self
im Konstruktor zu ersetzen, erhalten Sie einen Fehler (?).
Ich vermute, dass Sie Jython ausführen, da sich CPython hier nicht beschweren würde, stattdessen wird eine lokale Variable self
erstellt und ihr Wert verloren.
Um das zu erreichen, was Sie wollen, sollten Sie eine Klasse mit der benutzerdefinierten __new__
anstelle von __init__
erstellen, Ihre MonkeyDevice
Instanz von der Factory holen und Ihre Sachen in die Instanz oder ihre Klasse / Basen / etc / p>
Alternativ könnten Sie MonkeyDevice
in eine andere Klasse umbrechen und monkey-ish-Aufrufe und Mitgliederzugriffe durch __getattr__
und __setattr__
übergeben.
Tags und Links python android inheritance monkeyrunner