For the Nine Unknown Men who might also be attempting this sort of thing.
Persistance pays…
import dtai.gwt.GadgetFrame def my__getattr__(self, name): if name.startswith("__"): raise AttributeError(name) getter = "get"+name.capitalize() if getter in dir(self): tmp = getattr(self, getter) return tmp() iser = "is"+name.capitalize() if iser in dir(self): tmp = getattr(self, iser) return tmp() raise AttributeError(name) class Local: def getFred(self): return "Fred!" Local.__getattr__ = my__getattr__ test = Local() print test.fred class WrappedGadgetFrame(dtai.gwt.GadgetFrame): pass WrappedGadgetFrame.__getattr__ = my__getattr__ dtai.gwt.GadgetFrame = WrappedGadgetFrame window = dtai.gwt.GadgetFrame() print window.visible
when executed, yields
C:...>PyInterop.exe Fred! False
which is the get() side of attributes done at the cost of a pass of subclassing. The equivalent set() shouldn't be too difficult, but automating the subclassing will be the next challenge.
Then adding the listener-based attributes; and finally, hiding it from Jython…
No comments:
Post a Comment