Wie erbt man von MonkeyDevice?

8

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:

%Vor%

Was mache ich falsch?

Vielen Dank im Voraus!

    
Matthias Braun 15.09.2011, 15:30
quelle

2 Antworten

1

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__

aufrufen

Beispiel:

%Vor%     
Blaine 25.01.2013, 07:55
quelle
1

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.

    
Dima Tisnek 23.02.2012 09:33
quelle