This is an old copy of the Python FAQ. The information here may be outdated.

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

 

A Django site. rendered by a django application. hosted by webfaction.