Class or Dictionary?

Martin De Kauwe mdekauwe at gmail.com
Sat Feb 12 04:04:40 EST 2011


On Feb 12, 7:22 pm, John Nagle <na... at animats.com> wrote:
> On 2/11/2011 6:56 AM, Martin De Kauwe wrote:
>
> > Hi,
>
> > I have a series of parameter values which i need to pass throughout my
> > code (>100), in C I would use a structure for example. However in
> > python it is not clear to me if it would be better to use a dictionary
> > or build a class object? Personally I think accessing the values is
> > neater (visually) with an object rather than a dictionary, e.g.
>
> > x = params['price_of_cats'] * params['price_of_elephants']
>
> > vs.
>
> > x = params.price_of_cats * params.price_of_elephants
>
>     Don't use a class as a dictionary.  It causes various forms
> of grief.  A dictionary will accept any string as a key, and
> has no reserved values.   That's not true of class attributes.
> There are already many names in a class's namespace, including
> any functions of the class.  Attribute syntax is restricted -
> there are some characters you can't use.  Unicode attributes
> don't work right prior to Python 3.  If the names are coming
> in from outside the program, there's a potential security
> hole if someone can inject names beginning with "__" and
> mess with the internal data structures of the class.
> And, of course, you can't use a name that's a reserved
> word in Python.
>
>     (This last is forever causing grief in programs that
> parse HTML and try to use Python class attributes to
> represent HTML attributes.  "class" is a common HTML
> attribute but a reserved word in Python.  So such parsers
> have to have a special case for reserved words.  Ugly.)
>
>     In Javascript, classes are simply dictionaries, but Python
> is not Javascript.  If you want a dictionary, use a "dict".
>
>                                 John Nagle

OK this was what I was after, thanks. I shall rewrite as dictionaries
then given what you have said.



More information about the Python-list mailing list