How can I define class methods outside of the class?

Ian Kelly ian.g.kelly at gmail.com
Thu Dec 2 02:32:07 EST 2010


On 12/1/2010 10:47 PM, James Mills wrote:
> On Thu, Dec 2, 2010 at 3:36 PM, Jeremy<jlconlin at gmail.com>  wrote:
>> I have some methods that I need (would like) to define outside of the
>> class.  I know this can be done by defining the function and then
>> setting it equal to some member of an instance of the class.  But,
>> because of the complexity of what I'm doing (I have to set many
>> functions as class methods) I would rather not do this.  Can someone
>> show me how to do this?  Is it even possible?  Can decorators be used
>> here?
>
> Do you mean something like this ?
>
> @classmethod
> def foo(cls):
>      print "I am the foo classmethod on %r" % cls
>
> class Foo(object):
>      pass
>
> Foo.foo = foo

Slightly better:

def foo(cls):
     # Do something

class Foo(object):
     pass

Foo.foo = classmethod(foo)

This way the unbound foo is callable as well.

Cheers,
Ian




More information about the Python-list mailing list