abcd a écrit : > On Mar 14, 7:29 am, "abcd" <[EMAIL PROTECTED]> wrote: >> Hi, >> I have a dictionary which may contain various keys/values, however, >> it will always contain 'name' and 'age' keys. >> >> This dictionary is kept inside a class, such as.... >> >> class Person:
Do yourself a favor : use new-style classes: class Person(object): >> def __init__(self, name, age): >> self.data = {'name' : name, 'age' : age} You may improve this part with kwargs: def __init__(self, name, age, **kw): kw.update(name=name, age=age) self.data = kw Also, and FWIW, object attributes are stored in self.___dict__. Do you have a compelling reason to use yet another 'data' dict ? >> def getData(self, includeNameAge=False): >> if includeNameAge: return self.data >> tmp = <shallow or deep copy of 'data'> tmp = self.data.copy() >> del tmp['name'] >> del tmp['age'] >> return tmp The problem with this implementation (as well as for the other below) is that in the first case you return a reference to the data dict itself, while in the second case you return a new dict. p = Person('bibi', 42, foo='bar') data = p.getData(True) data['baaz'] = 'quux' del data['name'] print p.data p = Person('bibi', 42, foo='bar') p.getData() data['baaz'] = 'quux' del data['foo'] print p.data Better to *always* return a copy IMHO. -- http://mail.python.org/mailman/listinfo/python-list