Bruno Desthuilliers <[EMAIL PROTECTED]> wrote:
> > Can someone suggest an efficient way of calling method whose name is
> > passed in a variable?
> > 
> 
>  method = getattr(obj, 'method_name', None)
>  if callable(method):
>       method(args)

I think that that is needless LBYL...

   getattr(obj, 'method_name')(args)

Will produce some perfectly good exceptions

    >>> class A(object):
    ...     def __init__(self):
    ...             self.x = 2
    ...     def f(self, x):
    ...             print x == self.x
    ...
    >>> obj = A()
    >>> getattr(obj, 'floop')(1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'A' object has no attribute 'floop'
    >>> getattr(obj, 'x')(1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not callable
    >>> getattr(obj, 'f')(1)
    False
    >>>

-- 
Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to