[portland] Seeking opinions on choosing data types: dictionary or instance attributes?

Adam Lowry adam at therobots.org
Tue Nov 27 22:44:53 CET 2007


On Nov 27, 2007, at 12:23 PM, ray at bme.ogi.edu wrote:
<snip>
> and I'm wondering when we should use instance attributes vs.
> when we should use dictionaries. (We'll have some lists when sequence
> matters)  My friend loves dictionaries and says to make every class
> a dictionary; then instead of any instance attributes, have key  
> value pairs.

First off, I'd suggest not making the class itself a dict (that is,  
inheriting from UserDict). In my experience, unless you're really just  
making a dictionary variant, not a class that uses a dictionary, it'll  
end being more complicated. Others might disagree, though.

One common way is to have classes that contain a dictionary with the  
values:

class MyThingie(object):
     def __init__():
         self.values = <some default values or empty dict>

then internally you can use the values dict, but you won't have to  
worry about accidentally changing the behavior of the dict or if  
another non-dictionary storage starts to look better.

But to the original question; I would suggest writing a bit of  
experimental code using the classes you're working on; that way you  
can see which code is more readable.

Adam


More information about the Portland mailing list