On Jan 12, 2012, at 8:33 AM, Anthony wrote:

> On Thursday, January 12, 2012 10:59:09 AM UTC-5, Jonathan Lundell wrote:
> It's an interesting idea, but URL just returns a string, and aside from being 
> a fairly big rewrite, it's likely that it would break existing code that 
> relies on it being a string.
> 
> You could create your own object that takes the same arguments as URL and 
> stores them as attributes, and whose __str__ and __repr__ functions are the 
> actual call to URL().
> 
> Perhaps this isn't advisable or worthwhile, but maybe we could subclass str 
> so URL still returns a string but can also have attributes to store the 
> controller, function, etc.
> 
> class URL(str):
>     def __new__(cls, a, c, f, etc.):
>         [build url string as usual]
>         url = str.__new__(cls, url_string)
>         url.controller = controller
>         url.function = function
>         etc.
>         return url
> 

David also wants to be able to edit the attributes of the resulting object, 
with the results reflected in the string, so it'd need to be a more elaborate 
object, hence the need for lazy evaluation via __str__.

Setting that aside, though, your idea has the advantage of being compatible 
with the existing URL, while my version requires a separate object. (In yours, 
it'd be good to make the stored attributes read-only, to guard against someone 
assuming that they could be usefully edited.)

Reply via email to