Oren Tirosh wrote: > I assume that the motive is to get rid of the quotes around the key and > conceptually treat it as a "symbol" rather than as a string. If that is > the case it could apply to access as well as initialization. > > class record(dict): > def __init__(self, __initfrom=(), **kw): > self.__dict__ = self > dict.__init__(self, __initfrom) > self.update(kw) > > def __repr__(self): > return "%s(%s)" % (self.__class__.__name__, > ', '.join(['%s=%s' % (k, repr(v)) for k,v in self.items()])) > > Fields can be accessed as either items or attributes of a record object. (Neat! Would've never guessed that works... I actually wrote a class with this purpose the other day, I'll see whether I can use the above instead.) But: no, I simply find the {"key": "value"} syntax sometimes inappropriate. Consider the following example: template = """some elaborate template using %(name)s-style substitution""" # idiom 1 x = template % {"name1": foo(), "name2": baz()} # idiom 2 name1 = foo() name2 = foo() x = template % locals() # idiom 3 (after my patch, or with a homegrown function) x = template % dict(key1=foo(), key2=baz()) I find #3 more readable than #1. #2 ain't so bad, but I hate it that when you're quickly going over the code it looks like there are some unused variables. Just
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4