Axel Straschil wrote:
Hello!

Why not:


class A:
    def a_lengthy_method(self, params):
         # do some work depending only on data in self and params

class B(A): pass


?

Lg,
AXEL.

As a rough guess, I think the original poster was wondering how to include *one* specific method from class A into B, without including all the methods of A. Jp Calderone's suggestion of defining a special Mixin class seems to be the cleanest implementation.


E.g.

class MyMixin:
        """ Defines only a single method. It may be a debug call, or
        a replacement for the classes' string representation. Etc. """
        def a_lengthy_method(self,params):
                # do some work

class A(MyMixin):
        def other_lengthy_procedures(self, params):
                pass

class B(MyMixin):
        pass

The advantage of this is that you can define a normal inheritance tree for a variety of classes, and then specifically override a single (or group) of methods by placing the MyMixin class at the front of the inheritance call. (The book "Programming Python" uses this a LOT in the Tkinter section.)

E.g.

class C:
        def well_now_what_do_we_do(self):
                # stuff
        def a_lengthy_method(self,params):
                # This does the wrong stuff.

class D(MyMixin, C):
        def __init__(self):
                # blahblahblah

Now class D has the "correct" a_lengthy_method, inherited from MyMixin, as well as all the other methods from class C, and the methods defined in it's own class statement.

Joal

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

Reply via email to