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