On Thursday, August 18, 2016 at 12:55:33 PM UTC+12, Terry Reedy wrote: > > On 8/17/2016 7:13 PM, Lawrence D’Oliveiro wrote: > >> On Thursday, August 18, 2016 at 8:25:37 AM UTC+12, Terry Reedy wrote: >>> >>> for section_name, line_number in text.parser.toc: >>> def goto(line=line_number): >>> text.yview(line) >>> drop.add_command(label=section_name, command=goto) >> >> You don’t think of that as having its own bit of subtle nastiness? > > No, you will have to be explicit.
That’s not my idea of being “explicit” at all. I hit a similar issue here <https://github.com/ldo/harfpy>. My solution took this sort of form: ... #end Face def def_face_props(celf) : # get/set index, upem and glyph_count all have the same form: # all these properties are unsigned integers. def def_face_prop(propname) : # need separate inner function so each method gets # correct values for hb_getter and hb_setter hb_getter = "hb_face_get_%s" % propname hb_setter = "hb_face_set_%s" % propname def getter(self) : return \ getattr(hb, hb_getter)(self._hbobj) #end getter def setter(self, newval) : getattr(hb, hb_setter)(self._hbobj, newval) #end setter getter.__name__ = propname getter.__doc__ = "the %s property." % propname setter.__name__ = propname setter.__doc__ = "sets the %s property." % propname propmethod = property(getter) propmethod = propmethod.setter(setter) setattr(celf, propname, propmethod) #end def_face_prop #begin def_face_props for propname in ("index", "upem", "glyph_count") : def_face_prop(propname) #end for #end def_face_props def_face_props(Face) del def_face_props -- https://mail.python.org/mailman/listinfo/python-list