[Python-Dev] Re: Alternative Implementation for PEP 292: Simple String Substitutions (original) (raw)

Paul Moore pf_moore at yahoo.co.uk
Sun Aug 29 15:48:19 CEST 2004


"Raymond Hettinger" <python at rcn.com> writes:

I'm not sure what to do next. Aside from Aahz, no one on python-dev seems to be interested and Barry appears to have been off-line for a few days. Ideally, I would like to get this in a few days ahead of the alpha release.

I'm not too worried either way, as I don't think that this will be something I use a lot (I may be wrong, though..)

Having said that, I do feel that your points should be addressed. I haven't looked at either implementation, but I'd assume that the key benefit of a class-based implementation would be the ability to subclass to modify behaviour. If that isn't happening in practice, then I agree that a function is probably a better option.

As a test case, how would I implement the case that has come up here recently, of supporting $obj.attr substitutions, in each of the two implementations? It would be interesting to see the relative simplicity. I'm assuming that the function-based case would require effectively a cut & paste reimplementation.

[FX: Dives into source code...] The Template class is pretty trivial, but it doesn't seem to be designed for extension. Thus, the above test case would still need pretty much a rewrite. However, if the Template class was rewritten with overriding in mind, it probably could make things easier:

  1. Split the match pattern into pieces, such that adding new syntax like $obj.attr is just a case of adding a new pattern to a list.
  2. Make the mod code more case-like, having separate actions based on group name. Then overriding code could just add actions for the groups it added, and call the base class for the rest.

This isn't fully thought through, and may well not be worth it in practice, but it gives the sort of benefits I'd expect from a class-based approach.

Paul.

Home computers are being called upon to perform many new functions, including the consumption of homework formerly eaten by the dog -- Doug Larson



More information about the Python-Dev mailing list