[Python-3000] Changing the % format return type Re: features i'd like [Python 3000?] ... #4: interpolated strings ala perl

Jan Grant jan.grant at bristol.ac.uk
Wed Dec 6 12:44:14 CET 2006

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 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"'

More information about the Python-3000 mailing list