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

Reply via email to