Method Overloading in Python With Examples

In this post we’’ll see how Method Overloading in Python works.

What is Method Overloading

Method overloading is also an object oriented programming concept which states that in a single class you can have two or more methods having the same name where the methods differ in types or number of arguments passed.

Method Overloading in Python

Method overloading is not supported in Python. In Python if you try to overload a method there won’t be any compile time error but only the last defined method is recognized. Calling any other overloaded method results in an error at runtime.

For example following is a class definition with two overloaded methods one with 2 arguments and another one with 3 arguments.

class OverloadExample:
    # sum method with two parameters
    def sum(self, a, b):
        s = a + b
        print('Sum is:', s)

    # overloaded sum method with three parameters
    def sum(self, a, b, c):
        s = a + b + c
        print('Sum is:', s)


obj = OverloadExample()
obj.sum(1,2,3)
obj.sum(4, 5)

Output

Sum is: 6
Traceback (most recent call last):
  File "F:/knpcode/Python/Programs/Overload.py", line 15, in 
    obj.sum(4, 5)
TypeError: sum() missing 1 required positional argument: 'c'

As you can see method with 3 arguments is the last one so that can be called but calling the sum method with two arguments results in error.

How to achieve method overloading in Python

If you want to write a method in Python that can work with different number of argument or simulate method overloading then you can use default argument or variable length arguments in Python.

1. Using default arguments

Here None keyword is assigned as the default value.

class OverloadExample:
    # sum method with default as None for parameters
    def sum(self, a=None, b=None, c=None):
        # When three params are passed
        if a is not None and b is not None and c is not None:
            s = a + b + c
            print('Sum is:', s)
        # When two params are passed
        elif a is not None and b is not None:
            s = a + b
            print('Sum is:', s)


obj = OverloadExample()
obj.sum(1, 2, 3)
obj.sum(4, 5)

Output

Sum is: 6
Sum is: 9

2. Using variable length arguments

You can use a variable length argument that can accept different number of values.

class OverloadExample:
    def sum(self, *args):
        s = 0
        for num in args:
            s += num
        print('Sum is:', s)


obj = OverloadExample()
obj.sum(1, 2, 3)
obj.sum(4, 5)

Output

Sum is: 6
Sum is: 9

Related Posts

  • Polymorphism in Python With Examples
  • Encapsulation in Python With Examples
  • Inheritance in Python With Examples
  • Name Mangling in Python With Examples
  • isinstance() in Python With Examples
  • Python Program to Read a File
  • That’s all for the topic Method Overloading in Python With Examples. If something is missing or you have something to share about the topic please write a comment.


    You may also like

  • Method Overloading in Java
  • Java Program to Find Maximum And Minimum Values in an Array
  • Java Static Import With Examples
  • Spring Autowiring Using @Inject and @Named Annotations
  • Spring Boot MVC Form Validation Example
  • What is Hadoop
  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.