On Sun, Aug 24, 2008 at 4:32 AM, Hussein B <[EMAIL PROTECTED]> wrote:
> I'm familiar with static method concept, but what is the class method?
> how it does differ from static method? when to use it?

"Class Methods" are related to the meta-class concept introduced since
the first beginning of OOP but not known enough so far.
If you are capable to reason (to model) using that concept, the you
will need "classmethod" decorator in Python.

"Static Methods" are global operations but are declared in the
name-space context of a class; so, they are not strictly methods.

In Python everything is an object, but functions declared in the
module scope not receive the instance of the module, so they are not
module methods, they are not methods, they are global functions that
are in the name-space context of the module in this case.

Methods always receive the instance as a special argument (usually
declared as self in Python). Classes (theoretically speaking) are also
objects (dual behavior).

Let's be explicit:

#<code>
class Test(object):
   def NormalMethod(self):
       print 'Normal:', self

   @staticmethod
   def StaticMethod(self=None):
       print 'Static:', self

   @classmethod
   def ClassMethod(self):
       print 'Class:', self

test = Test()
test.NormalMethod()
test.StaticMethod()
test.ClassMethod()   # the instance "test" is coerced to it's class to
call the method.
#</code>

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

Reply via email to