from jep import jproxy import random """ class proxy(): def __init__(self,cls): self.cls=cls def __call__(self, name): return jproxy(self, self.cls) @proxy(['ch.psi.pshell.device.Readable']) """ class Readable(): def __init__(self, name=None): self.name=name self.proxy=jproxy(self, ['ch.psi.pshell.device.Readable']) def __call__(self): return self.read() def __getattribute__(self, name): if name in ('proxy',): return object.__getattribute__(self, name) print(name) return self.proxy.__getattribute__(name) def getName(self): if self.name : return self.name return str(self.__class__.__name__) def read(self): raise Exception ("Not implemented") class ReadableScalar(Readable): def read(self): ret =random.random() print (ret) return ret class ReadableWaveform(Readable): def __call__(self): return self.read() def getSize(self): return 20 def read(self): ret = [] for i in range (self.getSize()): ret.append(random.random()) return ret def getName(self): return "rw1" #rs1 = jproxy(ReadableScalar(), ['ch.psi.pshell.device.Readable']) rs1 = ReadableScalar() #rw1 = jproxy(ReadableWaveform(), ['ch.psi.pshell.device.Readable$ReadableArray']) #ri1 = jproxy(ReadableImage(), ['ch.psi.pshell.device.Readable$ReadableMatrix']) #rw1=ReadableWaveform() rs1.read() #rw1.read() #rs1 = jproxy(rs1 , ['ch.psi.pshell.device.Readable'])# #tscan([rs1],10,0.1, save=False)