[EMAIL PROTECTED] wrote:
 Hello NG,

   I am trying to port a useful class from wxWidgets (C++) to a pure 
Python/wxPython
implementation. In the C++ source code, a unique class is initialized with
2 different methods (???). This is what it seems to me. I have this 
declarations:

<C++ code snipped>

The 2 different initializations refers to completely different objects (the
first one is a wx.Window, the second one is an horizontal line).

Does anyone know if is there a way to achieve the same thing in Python/wxPython?
Someone else has talked about overloaded constructors, but I don't have
any idea on how to implement this kind of "constructors" in Python. Does
anyone have a small example of overloaded constructors in Python?
I have no idea... Or am I missing something obvious?

If you do have to do something like this you could use keyword arguments with defaults. For example:


class C(object):
    def __init__(self, a=None, b=None):
        if None not in (a, b):
            raise some error (only one of a/b should be given)

        if a:
           # do something
        elif b:
           # do something else


Another way to do it is to use classmethods:

class C(object):

    def __init__(self):
        # do initialization

    def create_one(cls, a):
        obj = cls()
        # do something with a
        return obj

    create_one = classmethod(create_one)

    def create_two(cls, b):
        obj = cls()
        # do something with b
        return obj

    create_two = classmethod(create_two)

Then you can use it thus:

x = C.create_one(a='value')

y = C.create_two(b='value')

Because it is a classmethod, calling C.create_one('value') calls create_one() with two parameters:
- C
- 'value'


i.e. the first parameter is the class, not an instance of the class.

Hope this helped.

Shalabh




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

Reply via email to