Ka-Ping Yee's suggestion of overriding the interpolation builtin (or let's say, the "%" operator used for formatting) means there might be another way to do this using GFs: let's say that the following illustrative snippet is still desirable -
On Wed, 6 Dec 2006, Jan Grant wrote: > def foo(d: sqlDriver): > s = "select template goes here" % (param1, param2) > r = d.query(s) # do the Right Thing Suppose for a moment that % used like this returns, not a string, but an object that encapsulates the format and the parameter set supplied. Then the sqlDriver implementation could take advantage of Phillip's GF mechanisms thus: class driver # which implements sqlDriver def query(self, s: str): ... code here to perform a query based on a stock string ... def query(self, pf: parameterised_format): ... code here to extract the format string and quote the ... parameters appropriately within it. The _cost_ of this mechanism is that all library functions potentially have to become aware of the parameterised_format type. Alternatively (and although explicit is better than implicit), a GF framework might look to coerce a parameterised_format into a str using something like adaption. Or "parameterised_format" could be a _subtype_ of "str", which behaves exactly like the str type if it is naively used in contexts which demand a plain string. In the latter case (if achievable, I have not examined this closely) a %-formatted object would "degrade" to the simple string case for most current uses. jan -- jan grant, ISYS, University of Bristol. http://www.bris.ac.uk/ Tel +44 (0)117 3317661 http://ioctl.org/jan/ perl -e 's?ck?t??print:perl==pants if $_="Just Another Perl Hacker\n"' _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com