많은 일을 잘못하고 있습니다. 불행히도 monkeyrunner
을 사용하지 않으므로 라이브러리 자체와 관련된 세부 사항을 도울 수는 없습니다. device
이 하지Device
예를 얼마나
>>> class MonkeyRunner(object): pass
...
>>> class Device(MonkeyRunner):
... def __new__(self):
... return MonkeyRunner()
... def __init__(self):
... super(Device, self).__init__()
... def test():
... print "This is test"
...
>>> device = Device()
>>> device.test(self)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'MonkeyRunner' object has no attribute 'test'
>>> device
<__main__.MonkeyRunner object at 0xb743fb0c>
>>> isinstance(device, Device)
False
참고 : 코드가 무엇을
는 다음과 같은 것입니다. 이유는 __new__
메서드가 Device
인스턴스를 반환하지 않고 MonkeyRunner
인스턴스를 반환하기 때문입니다. 당신이 당신의 질문에 링크 된 대답은 상태 : 어쨌든
당신이,
__init__
보다
__new__
아니라 정의와 클래스를 만드는 공장
에서 MonkeyDevice
예를 을 얻고로 물건을 주입해야 원하는 것을 달성하기 위해 예 또는 클래스/기지/등입니다. 당신 AFAIK >>> def Device():
... def test():
... print "I'm test"
... inst = MonkeyRunner()
... inst.test = test
... return inst
...
>>> device = Device()
>>> device.test()
I'm test
: 당신이 같은 짓을한다는 뜻
다음 Device
단순히 함수가 될 수 있기 때문에
>>> class Device(MonkeyRunner):
... def __new__(self):
... inst = MonkeyRunner()
... inst.test = Device.test
... return inst
... @staticmethod
... def test():
... print "I'm test"
...
>>> device = Device()
>>> device.test()
I'm test
그러나 이것은 전혀 유용하지 않다 최소 waitForConnection
이 staticmethod
인 경우 MonkeyRunner
의 하위 클래스를 만들고 waitForConnection
메서드에서 인스턴스를 만들 수 없습니다.
class Device(object):
def __init__(self):
self._device = MonkeyRunner.waitForConnection(10)
def __getattr__(self, attr):
return getattr(self._device, attr)
def test(self):
print "I'm test"
답장을 보내 주신 모든 분께 특히 감사드립니다. – user2344495