Ben Wing <[EMAIL PROTECTED]> wrote: > > sorry to be casting multiple ideas at once to the list. i've been > looking into other languages recently and reading the recent PEP's and > such and it's helped crystallize ideas about what could be better about > python. > > i see in PEP 3101 that there's some work going on to fix up the string > formatting capabilities of python. it looks good to me but it still > doesn't really address the lack of a simple interpolated string > mechanism, as in perl or ruby. i find myself constantly writing stuff like > > text="Family: %s" % self.name [snip] > maybe_errout(i"[title], line [lineno]: [errstr]\n")
This can be done now via: maybe_errout("%(title)s, line %(lineno)i: %(errstr)s\n"%locals()) > def __str__(self): > return i"CCGFeatval([self.name], parents=[self.parents], > licensing=[self.licensing])" With the proper mapping, this is trivial... class namelookup: def __init__(self, namespace): self.ns = namespace def __getitem__(self, name): ns = self.ns names = name.split('.') try: if names[0] in ns: ns = ns[names[0]] names = names[1:] except IndexError: raise KeyError("bad namespace") for n in names: if hasattr(ns, n): ns = getattr(ns, n) else: return "<name not found>" return ns >>> class foo: ... a = 1 ... b = 2 ... >>> foo = foo() >>> print "%(foo.b)i + %(foo.a)i"%namelookup(locals()) 2 + 1 >>> While I understand the desire for better string interpolation, many of your needs can be covered with pre-existing string formatting. You can even write a handler for "{2} and {1} or {3}" as "%(2)s and %(1)s or % (3)s"%positional(a, b, c). Toss it into site.py, and you can use it whenever. If you want this to be fully in regards to Py3k, post on the py3k mailing list: python-3000@python.org - Josiah _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com