¿Cómo heredar de MonkeyDevice?

Quisiera extender la clase MonkeyDevice de la API monkeyrunner. Mi clase derivada se ve así.

from com.android.monkeyrunner import MonkeyDevice, MonkeyRunner class TestDevice(MonkeyDevice): def __init__(self, serial=None): MonkeyDevice.__init__(self) self = MonkeyRunner.waitForConnection(deviceId=serial) self.serial = serial 

Cuando llamo a test_dev = TestDevice(serial) de otro módulo consigo el error siguiente:

  test_dev = TestDevice(serial) TypeError: _new_impl(): 1st arg can't be coerced to com.android.monkeyrunner.core.IMonkeyDevice 

¿Qué estoy haciendo mal?

¡Gracias por adelantado!

    Parece que no puede inicializar directamente una instancia de MonkeyDevice sin una llamada a una función de fábrica waitForConnection . Así que en su lugar, necesita asignar self en su función __new__() para que MonkeyDevice reconozca la instancia como heredando de IMonkeyDevice antes de llamarla __init__

    Ejemplo:

     class TestDevice(MonkeyDevice): def __new__(self, serial=None): return MonkeyRunner.waitForConnection(deviceId=serial) def __init__(self): MonkeyDevice.__init__(self) 

    Parece que está intentando extender una instancia de MonkeyDevice devuelta por waitForConnection llamada de fábrica.

    Cuando intenta sustituir el self dentro del construtor, obtiene un error (?). Sospecho que estás ejecutando Jython, como CPython no se quejaría aquí, en lugar de una variable local se crea y su valor perdido.

    De todos modos para lograr lo que quieres, debes crear una clase con la costumbre __new__ lugar de __init__ , obtener la instancia de MonkeyDevice de la fábrica e inyectar tus cosas en la instancia o es class / bases / etc.

    Alternativamente, podría envolver MonkeyDevice en otra clase y pasar llamadas de mono y acceso a miembros aunque __getattr__ y __setattr__ .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.