Harald Massa wrote:
Hello!

I am using a library (= code of so else) within Python. Somewhere in this library there is:

class foo:
        def baa(self, parameters):
         print "something"
         self.baazanan(some other parameters)


class mirbo(foo): def baazanan(self, lalala): print "heylo tada"

class fujiko(foo):
      def baazanan(self, ltara):
          print "sing a song with me"


....


now I want to change the common baa-method. so that

def baa(self, parameters):
      print "soemthing special"
      self.baazanan(some other parameters)

Of course, I use a Python- and GPL-Licence compatible library, I can change the source of foo, and use my changed library.

But someday, it happened before, there will be an update by the publisher to that library.... and I have to do all again.

So, what is the most elegant solution to administer these changes?

Given these classes:

py> class foo:
...     def baa(self):
...         print "something"
...         self.baazanan()
...
py> class mirbo(foo):
...     def baazanan(self):
...         print "heylo tada"
...
py> class fujiko(foo):
...     def baazanan(self):
...         print "sing a song with me"
...

You should be able to redefine the method and assign it to the foo class:

py> def new_baa(self):
...     print "soemthing special"
...     self.baazanan()
...
py> foo.baa = new_baa

Then any instances created after this assignment should use the new baa method you defined:

py> mirbo().baa()
soemthing special
heylo tada
py> fujiko().baa()
soemthing special
sing a song with me

You also might bring up this point to the maintainer of the library -- if they know your intents, they can make this easier for you...

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

Reply via email to