defining class functions

James Stroud jstroud at mbi.ucla.edu
Tue Jan 20 01:34:09 CET 2009


Astan Chee wrote:
> Hi,
> I have two classes in python that are in two different files/python 
> scripts. Class A uses Class B like this:
> class B(object):
>    def function1(self,something):
>        pass
>    def function2(self,something):
>        print "hello one"
>        print something
> 
> class A(object):
>    def __init__(self):
>          instance = B()
>          instance.function2("hello two")
>          self.function3()
>    def function3(self):
>          print "hello three"
> 
> What I want to do here is to (re)define function1 from function3. Is 
> that possible? Is there any way of redefining a function of another 
> class without inheriting it? Does this make sense?

I know what you mean, but it doesn't make a lot of sense.

Best practice is to make the function module level, especially if self 
is not referenced beyond the function definition. If self is referenced, 
then all selves must share the same behavior if not the same heredity, 
and using a module level function is still best:

def function(quacker):
   print "hello there"
   quacker.quack()

James



More information about the Python-list mailing list