How can I overload constructors (or methods) in Python?
This answer actually applies to all methods, but the question usually comes up first in the context of constructors.
In C++ you’d write
class C {
C() { cout << "No arguments\n"; }
C(int i) { cout << "Argument is " << i << "\n"; }
}
in Python you have to write a single constructor that handles all cases, using either default arguments or type or capability tests. For example:
class C: def __init__(self, i=None): if i is None: print "No arguments" else: print "Argument is", i
This is not entirely equivalent, but close enough in practice.
You could also try a variable-length argument list, e.g.
def __init__(self, *args): ....
The same approach works for all method definitions.
CATEGORY: programming