Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > RE: apply()?

Reply
Thread Tools

RE: apply()?

 
 
Ron Griswold
Guest
Posts: n/a
 
      12-06-2005
Just the ticket. Thank you!

Ron Griswold
Character TD
R!OT Pictures



-----Original Message-----
From: python-list-bounces+rgriswold=
[mailtoython-list-bounces+rgriswold=] On Behalf
Of Fredrik Lundh
Sent: Monday, December 05, 2005 3:58 PM
To: python-
Subject: Re: apply()?

Ron Griswold wrote:

> I'm almost positive I've seen a function somewhere that will call a
> method of an object given the method's name. Something like:
>
> apply(obj, "func_name", args)
>
> is equivalent to:
>
> obj.func_name(args)
>
> For some reason I thought this was the apply function, but that

doesn't
> appear to be the case. Can someone point me in the right direction?


sounds like you're looking for getattr (get attribute):

func = getattr(obj, "func_name")
result = func(args)

or, in one line:

result = getattr(obj, "func_name")(args)

a common pattern is

try:
func = getattr(obj, "func_name")
except AttributeError:
... deal with missing method ...
else:
result = func(args)

(this makes sure that an AttributeError raise inside the method isn't
confused with an AttributeError raise by getattr).

another pattern is

func = getattr(obj, "func_name", None)
if func:
func(args)

which only calls the method if it exists. here's a variation:

func = getattr(obj, "func_name", None)
if callable(func):
func(args)

hope this helps!

</F>



--
http://mail.python.org/mailman/listinfo/python-list

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57