how to pass attribute name via sys.argv

how to pass attribute name via sys.argv

Post by Felix Hebe » Fri, 28 Jan 2005 21:48:28

Hi all,
I am doing some Python scripting for a while, but I'm not too deep into
it yet. So I have a problem I can't solve.

I need to call an object attribute:

value = object.attrName[0]

the problem is, that the attribute name can only be specified at runtime.

So what I have is something like

>>> attrName = sys.argv[1]
>>> attrName

and I need to pass it on so I can call

value = object.cellsize[0]

Can this be done using Python?

Thanks for any hints


how to pass attribute name via sys.argv

Post by Wolfram Kr » Fri, 28 Jan 2005 21:53:26

Use getattr:
value = getattr(object, attrName)[0]



how to pass attribute name via sys.argv

Post by Gilles Len » Fri, 28 Jan 2005 21:57:02

Felix Hebeler a rit :

The builtin "setattr" is your friend.
"object" is now a reserved (builtin) name, use "objekt" instead.

class Foo(object):
objekt = Foo()
attrName = sys.argv[1]
values = ['foo', 'bar', 'whatever']
setattr(objekt, attrName, values)



how to pass attribute name via sys.argv

Post by Felix Hebe » Sat, 29 Jan 2005 01:20:21


Thanks so much!
Had I known earlier.
Looks so easy...

Now, why did I not find this in the online tutorial, the reference
manual, or google?
Not that I didn't try... I mean, I would find 'getattr' if I searched,
but if you don't know what you're looking for..

I find the reference manual extremely (== too) compact to look things up.
A couple of colleages and me agreed that it is much more difficult to
find solutions and _useful_ tips for Python than e.g. for Java (where
there's Javadoc for example). The syntax doc in the reference manual to
me looks like computer linguists might understand, but unfortunately not
me. And Python code IS really easy to read, I agree, but what if I can't
find out how to write it?
I'd appreciate any link to online resources or recommendations for books

Chances are I'm a silly/lazy/deprived/stupid *** , but I try to think
there's still hope!

again, thank you so much for your quick response (thanks Gilles Lenfant
too!), I really DO like the Python community ;-)