PEP 8 example of 'Function and method arguments'

Steven Bethard steven.bethard at gmail.com
Mon Mar 13 17:48:51 CET 2006


Martin P. Hellwig wrote:
> While I was reading PEP 8 I came across this part:
> 
> """
> Function and method arguments
>    Always use 'self' for the first argument to instance methods.
>    Always use 'cls' for the first argument to class methods.
> """
> 
> Now I'm rather new to programming and unfamiliar to some basic concepts 
> of OOP. However I wrote most of my classes in the new style way and by 
> this I have always used 'self' for the first argument of an Instance 
> method, but now I'm unsure what actually the difference is between an 
> instance and a class method is and when to use it in which case.
> 
> Could somebody please enlighten me (a rtfm/wrong newsgroup is just as 
> welcome of course), preferably in a short code example?

You're probably doing fine.

     class C(object):

         # instance method
         def foo(self):
             ...

         # class method
         @classmethod
         def bar(cls):
             ...

It's probably pretty unlikely that you've declared any class methods, 
but if you have, you should be able to identify them by the call to 
``classmethod``.  If you don't see any of those, you're fine.

A class method is just a method that can be called like:

     Class.method()

instead of having to be called like:

     instance.method()

For 99% of the methods you write, I'd expect them to be instance methods.

STeVe



More information about the Python-list mailing list