如何从MonkeyDevice继承?

Mat*_*aun 8 python inheritance android monkeyrunner

我想扩展monkeyrunner API的MonkeyDevice类.我的派生类看起来像这样.

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
Run Code Online (Sandbox Code Playgroud)

当我test_dev = TestDevice(serial)从另一个模块调用时,我收到以下错误:

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

我究竟做错了什么?

提前致谢!

Bla*_*ine 1

看来您无法MonkeyDevice在不调用工厂函数的情况下直接初始化实例waitForConnection。因此,您需要self__new__()函数中进行分配,以便在调用实例之前MonkeyDevice将实例识别为继承自IMonkeyDevice__init__

例子:

class TestDevice(MonkeyDevice):
    def __new__(self, serial=None):
        return MonkeyRunner.waitForConnection(deviceId=serial) 
    def __init__(self):
        MonkeyDevice.__init__(self)
Run Code Online (Sandbox Code Playgroud)