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