By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
428,583 Members | 617 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 428,583 IT Pros & Developers. It's quick & easy.

getting a class attribute using a keyword argument

P: n/a
Hello,

I have a list of class instances. I wish to get the appropriate class attribute
in each class instance depending on a SINGLE keyword in the calling class.

How do I get the calling method to correctly recognise the keyword as a keyword
and not a class attribute? See example code below (which doesn't work).

class tocall:
def __init__(self):
self.title = "test"
self.name = "name"

def callingmethod(self,**kw):
for key in kw:
if tocall.key == kw[key]:
return tocall.key

which should work as such(but doesn't):

print callmethod(title = "test")
print callmethod(name = "name")

Regards,

Guy
Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Guy Robinson wrote:
Hello,

I have a list of class instances. I wish to get the appropriate class
attribute in each class instance depending on a SINGLE keyword in the
calling class.


Py> help(getattr)
Help on built-in function getattr in module __builtin__:

getattr(...)
getattr(object, name[, default]) -> value

Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.
When a default argument is given, it is returned when the attribute doesn't
exist; without it, an exception is raised in that case.

Cheers,
Nick.

--
Nick Coghlan | nc******@email.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.skystorm.net
Jul 18 '05 #2

P: n/a

Guy Robinson wrote:
Hello,

I have a list of class instances. I wish to get the appropriate class attribute in each class instance depending on a SINGLE keyword in the calling class.
How do I get the calling method to correctly recognise the keyword as a keyword and not a class attribute? See example code below (which doesn't work).
class tocall:
def __init__(self):
self.title = "test"
self.name = "name"

def callingmethod(self,**kw):
for key in kw:
if tocall.key == kw[key]:
return tocall.key

which should work as such(but doesn't):

print callmethod(title = "test")
print callmethod(name = "name")

Regards,

Guy

You probably want something like this:
class tocall:
def __init__(self):
self.title = "test"
self.name = "name"
x = tocall()

print getattr(x, 'title')
print getattr(x, 'name')
print getattr(x, 'bogus')

Jul 18 '05 #3

P: n/a
Guy Robinson wrote:
Hello,

I have a list of class instances. I wish to get the appropriate class
attribute in each class instance depending on a SINGLE keyword in the
calling class.

How do I get the calling method to correctly recognise the keyword as a
keyword and not a class attribute? See example code below (which doesn't
work).

class tocall:
def __init__(self):
self.title = "test"
self.name = "name"

def callingmethod(self,**kw):
for key in kw:
if tocall.key == kw[key]:
return tocall.key

which should work as such(but doesn't):

print callmethod(title = "test")
print callmethod(name = "name")

Regards,

Guy


Hi,

This may be more like you want.

class tocall:
def __init__(self):
self.title = "test"
self.name = "name"

def callmethod(**kw):
for key in kw:
if hasattr(tocall(), key):
return getattr(tocall(), key)

print callmethod(title = "test")
print callmethod(name = "name")

Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.