Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   getting a class attribute using a keyword argument (http://www.velocityreviews.com/forums/t340380-getting-a-class-attribute-using-a-keyword-argument.html)

Guy Robinson 01-17-2005 11:05 AM

getting a class attribute using a keyword argument
 
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

Nick Coghlan 01-17-2005 11:18 AM

Re: getting a class attribute using a keyword argument
 
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 | ncoghlan@email.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.skystorm.net

wittempj@hotmail.com 01-17-2005 11:25 AM

Re: getting a class attribute using a keyword argument
 

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')


John Hsu 01-19-2005 11:01 PM

Re: getting a class attribute using a keyword argument
 
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")



All times are GMT. The time now is 05:07 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.