John Salerno wrote:
> John Salerno wrote:
> 
>> [EMAIL PROTECTED] wrote:
>>
>>> Even if you don't end up referring to self or any instance
>>> attributes within the method
>>
>>
>> Hmm, follow-up: I *do* plan to refer to instance attributes inside
>> these methods (self.something), but does that require that they be
>> instance methods, or can they still reference 'self' since they are
>> inside the class?
>>
>> They won't be called directly from an instance, which is why I
>> wondered about making them static or class methods, but can static or
>> class methods use self, or does it have to be an instance method in
>> that case?
> 
> 
> Ugh, sorry about another post, but let me clarify: In these utility
> functions, I need to refer to an attribute of an instance,

So you want ordinary methods.

> but these
> functions will be called from another method in the class, not from the
> instance itself.

yes, they will:

class Parrot(object):
   def _func1(self, whatever):
     print whatever

  def talk(self):
     self._func1('vroom')

> Is this even possible, or would 'self' have no meaning
> when used this way?

You probably noticed that 'self' (or whatever you name it - but better
to stick to convention) *must* be defined as the first param of a
'method'. The reason for it is that what we commonly call 'methods' are
in fact plain Python functions. It's only when they are looked up on an
instance that they are wrapped into a 'method' object (read about the
descriptor protocol to learn how...), that in turn calls the function,
passing it the instance as first param.

For saying it short (warning: over-simplification ahead), the usual
method call idiom:

  myObj.myMethod(arg)

is syntactic sugar for:

  myObj.__class__.myMethod(myObj, arg)


HTH.

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '[EMAIL PROTECTED]'.split('@')])"
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to