On Feb 12, 7:22 pm, John Nagle <na...@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. -- http://mail.python.org/mailman/listinfo/python-list