Alternate Syntax for dictionary elements

Skip Montanaro skip at pobox.com
Tue Jul 3 15:29:02 EDT 2001


    Gerson> dict = { 'type' : 'button', 'id': 32, 'name' : 'some name' }
    ...
    Gerson> if o.type == 'button':
    Gerson> 	# do something for objects of type button

    Gerson> Worthwile pursuit or total crap ?

How about:

    import UserDict

    class Dict(UserDict.UserDict):
	def __getattr__(self, name):
	    if name == "data":
		return self.__dict__['data']
	    try:
		val = self.data[name]
	    except KeyError:
		raise AttributeError, "object has no attribute %s" % name
	    return val

	def __setattr__(self, name, val):
	    if name == "data":
		self.__dict__['data'] = val
	    else:
		self.__dict__['data'][name] = val

    def test():
	d = Dict()
	d['a'] = 1
	print d.a
	d.b = 1
	print d['b']
	try:
	    print d.c
	except AttributeError:
	    print "d.c does not exist, as expected"

    test()

-- 
Skip Montanaro (skip at pobox.com)
(847)971-7098




More information about the Python-list mailing list