getting a class attribute using a keyword argument

G

Guy Robinson

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
 
N

Nick Coghlan

Guy said:
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.
 
W

wittempj

Guy said:
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')
 
J

John Hsu

Guy said:
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")
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,527
Members
44,998
Latest member
MarissaEub

Latest Threads

Top