Python의 메서드 오버로딩

Rana Hasnain Khan 2024년2월15일
  1. Python의 메서드 오버로딩
  2. Python에서 메서드 오버로딩의 이점
  3. 동일한 메서드에서 다른 데이터 유형을 사용하는 Python의 메서드 오버로딩
  4. 다중 디스패치 데코레이터를 사용하는 Python의 메서드 오버로딩
Python의 메서드 오버로딩

이 튜토리얼에서는 Python의 메소드 오버로딩과 그 장점을 예제와 함께 소개합니다.

Python의 메서드 오버로딩

메소드 오버로딩은 Python에서 중요한 역할을 합니다. 메서드는 매개변수를 전혀 사용하지 않는 경우도 있고 하나 이상의 매개변수를 사용하는 경우도 있습니다.

동일한 메서드를 다른 방식으로 호출하는 것을 메서드 오버로딩이라고 합니다. Python은 다른 언어와 같이 기본적으로 오버로딩 방법을 지원하지 않습니다.

둘 이상의 메서드는 Python에서 같은 이름을 가질 수 없습니다. 메서드 오버로드를 통해 동일한 연산자를 다른 의미로 만들 수 있기 때문입니다. 메서드 오버로딩에 대해 자세히 살펴보겠습니다.

동일한 클래스에 있는 두 개 이상의 메서드가 고유한 매개 변수를 사용하는 경우 이름이 같을 수 있습니다. 메서드 오버로딩의 특징은 동일한 연산자가 여러 해석을 가질 수 있도록 합니다.

오버로딩은 같은 이름으로 많은 기능을 수행할 수 있는 메서드나 연산자를 말합니다.

이제 동일한 매개 변수를 사용하여 두 가지 다른 작업을 수행하는 기본 예제를 통해 메서드 오버로드에 대해 논의해 보겠습니다.

예:

# python
class methodOverload:
    def MethodHi(self, user=None):
        if user is not None:
            print("Hello " + user)
        else:
            print("Hello")


MethodObj = methodOverload()
MethodObj.MethodHi()
MethodObj.MethodHi("Hasnain")

출력:

![Python 간단한 예제의 메서드 오버로딩](</img/Python/python 간단한 example.png>의 메서드 오버로드

이 예에서 볼 수 있듯이 이름이 있거나 없는 사용자를 맞이하는 MethodHi 메서드를 정의한 methodOverload 클래스를 만들었습니다. 그 클래스 후에 우리는 클래스를 사용하여 개체 인스턴스를 만들고 매개 변수를 사용하거나 사용하지 않고 호출했습니다.

매개 변수가 다른 이러한 유형의 함수 로드를 메서드 오버로드라고 합니다. 이제 Python 프로그램에서 메서드 오버로드를 사용하는 이점에 대해 논의해 보겠습니다.

Python에서 메서드 오버로딩의 이점

Python 프로그램에서 메서드 오버로드를 사용하면 많은 이점이 있습니다. 그 중 일부는 다음과 같습니다.

  1. 메서드 오버로드는 프로그램의 복잡성, 기능 또는 메서드를 줄입니다. 사용자가 매개변수 없이, 단일 매개변수 또는 여러 매개변수와 함께 사용하는 것을 간단하게 만듭니다.
  2. 메소드 오버로딩은 코드 품질을 향상시키고 효율적으로 만들며 대부분의 사용 사례를 다루어 애플리케이션을 성공적으로 만듭니다.
  3. 메서드 오버로딩은 프로그램의 재사용성을 높이고 쉽게 접근할 수 있도록 합니다.

이제 메소드 오버로딩의 몇 가지 예를 살펴보고 메소드 오버로딩의 다양한 측면을 다룰 것입니다. 같은 함수를 만들고 다르게 작동시키고 싶을 때 메소드 오버로딩을 사용할 수 있습니다.

동일한 메서드에서 다른 데이터 유형을 사용하는 Python의 메서드 오버로딩

첫 번째 예에서는 추가 클래스를 만들고 다른 데이터 유형을 사용하여 동일한 방법으로 두 가지 작업을 수행합니다. 프로그램은 데이터 유형이 정수인지 확인한 다음 답은 숫자를 더하는 것입니다.

데이터 유형이 문자열인 경우 대답은 문자열의 연결입니다. 인수를 통과하고 모두 확인하는 for 루프를 사용합니다.

정수인 경우 추가됩니다. 그리고 문자열인 경우 아래와 같이 결합됩니다.

예:

# python
def addition(datatype, *args):
    if datatype == "int":
        result = 0
        for x in args:
            result = result + x
        print(result)
    if datatype == "str":
        result = []
        for x in args:
            result.append(x)
        print(result[0], result[1])


addition("int", 7, 11)

addition("str", "Hello", "python")

출력:

Python 다른 데이터 유형의 메서드 오버로딩 예

위의 예에서 더할 숫자가 있는 데이터 유형으로 정수를 제공하면 숫자 추가를 수신했습니다. 그러나 문자열을 데이터 유형으로 지정하고 문자열을 전달하면 동일한 방법으로 문자열을 연결하고 결과를 표시했습니다.

다중 디스패치 데코레이터를 사용하는 Python의 메서드 오버로딩

이제 약간 까다로울 수 있는 다른 예를 살펴보겠습니다. 이 예제에서는 메서드 오버로드를 수행하는 효율적인 방법을 사용합니다.

다음 명령을 사용하여 Multiple Dispatch Decorators를 설치해야 합니다.

pip install multipledispatch

설치 후 프로그램으로 가져옵니다. 세 개의 정수와 세 개의 부동 소수점을 전달하고 아래 결과를 표시합니다.

예:

# python
from multipledispatch import dispatch


@dispatch(int, int, int)
def multiply(oneInt, twoInt, threeInt):
    ans = oneInt * twoInt * threeInt
    print(ans)


@dispatch(float, float, float)
def multiply(oneInt, twoInt, threeInt):
    ans = oneInt * twoInt * threeInt
    print(ans)


multiply(3, 7, 8)
multiply(3.6, 5.9, 9.9)

출력:

Multiple Dispatch를 사용하여 Python에서 메서드 오버로딩

위의 예에서 볼 수 있듯이 여러 디스패치 데코레이터를 사용하여 서로 다른 데이터 유형을 보내고 사용하려는 모든 데이터 유형에 대해 동일한 메서드를 사용하여 결과를 얻을 수 있습니다.

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn