"Michael Yanowitz" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hello: > > Maybe I am missing something, but from what I've seen, > it is not possible to overload functions in Python. That > is I can't have a > def func1 (int1, string1): > and a > def func1 (int1, int3, string1, string2): > without the second func1 overwriting the first.
I am hard put to think of why you would want to do something like that in real code. The 2nd-parameter type mismatch will make using code harder to write and read without bugs. Why not just give the two different-but-related functions two different-but-related, names? But if you insist ..., here is the Python way... def func1(int1, int3, string1=None, string2=None): "doc short calling sequence" if string1==None: string1 = int3; del int3, string2 <proceed with first body> else: <proceed with second body> or def func1(int1, *args): if len(args ==1): string1 = args[0]; del args <proceed with first body> elif len(args ==3): int3,string1,string2 = args; del args <proceed with second body> else: <raise error> > However, operators can be overloaded. In the sense that you can define classes with appropriate special methods. You can also give two different classes methods named 'func1'. > So can I define a new operator? No. Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list