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