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