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
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to