Class Methods (as opposed to Instance Methods)

Thomas Wouters thomas at xs4all.nl
Sun Aug 22 21:13:19 CEST 1999


On Fri, Aug 20, 1999 at 01:45:53PM +0200, Olivier Deckmyn wrote:

> Instance methods are easy to use:

> instance=MyClass()
> instance.myInstanceMethod()

> But here is how I would like to use class Methods :
> print MyClass.myClassMethod(2)
> (Note that there is no MyClass().xxx but well MyClass.xxx)
> I don't find any way to do that :(
> I know it exists class attributes, but it does not fit my needs :(

Cant be done(*), class functions expect a class instance as first argument at
all times. You can fake it by giving an unused instance (print
MyClass.myClassMethod(MyClass(),2) or by not using a class at all, but a
module (thus creating a seperate namespace)

file MyClass.py:
def myClassMethod(x):
	# etc
^D
file myprogram.py:

import MyClass
print MyClass.myClassMethod(2)

But in general it's best just to avoid using class methods and use either
general methods, module methods (if you aren't writing a module, it's worth
considering to make it a module after all ;-) or just instance methods.
Instance methods dont really have to _use_ the 1st argument (usually 'self')
they're called with.

(*) As far as I know. I've been proven wrong before.

Humbly-y'rs, Thomas.

-- 
Thomas Wouters <thomas at xs4all.net>

Hi! I'm a .signature virus! copy me into your .signature file to help me spread!




More information about the Python-list mailing list