On Fri, 11 Feb 2011 07:06:11 -0800, christian.posta wrote:

> Within the __call__ function for a class, I saw a method of that class
> referred to like this:
> 
> *self.<method_name_here>()
> 
> The brackets indicate the method name. What does the *self refer to??
> Does it somehow indicate the scope of the 'self' variable? Thanks in
> advance...


self is not a keyworld. It is an ordinary variable name like any other, 
except that by convention it is used to refer to the instance inside 
methods.

Without knowing the context, *self.method() could mean at least one of 
two things:

(1) Ordinary multiplication:

    result = 42*self.method()

This is like: 

    temp = self.method()
    result = 42*temp


(2) Positional argument unpacking:

    result = function(*self.method())

This is like:

    temp = self.method()
    result = function(temp[0], temp[1], temp[2], ...)

or if you prefer, like the old and now deprecated function:

    result = apply(function, temp)



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

Reply via email to