[python] 파이썬에서의 메소드 오버로딩 구현 방법
파이썬은 메소드 오버로딩을 직접 지원하지 않습니다. 메소드 오버로딩은 같은 이름을 가진 메소드를 여러 개 정의하는 것을 의미합니다. 하지만, 파이썬에서는 기본적으로 동일한 이름을 가진 메소드를 정의할 수 없습니다.
그러나 파이썬에서는 다양한 매개변수를 받는 함수를 구현할 수 있는 방법이 있습니다. 이를 활용하여 메소드 오버로딩과 유사한 기능을 구현할 수 있습니다.
가변 인자 활용
가변 인자를 활용하여 메소드에 다양한 매개변수를 전달할 수 있습니다. 예를 들어, *args
나 **kwargs
와 같은 인자를 활용하여 다양한 형태의 매개변수를 받을 수 있습니다.
class OverloadExample:
def method(self, *args):
if len(args) == 1:
# 특정 매개변수 형태에 따라 동작을 구분할 수 있음
print("One argument")
elif len(args) == 2:
print("Two arguments")
위 예제에서 method
함수는 가변 인자 *args
를 받아들이고, 매개변수의 개수에 따라 다른 동작을 수행할 수 있습니다.
데코레이터 활용
데코레이터를 사용하여 메소드에 여러 기능을 추가할 수 있습니다. 이를 활용하면 동일한 이름을 가진 메소드에 다양한 동작을 추가할 수 있습니다.
class OverloadExample:
def overload_decorator(self, func):
def wrapper(*args, **kwargs):
if len(args) == 1:
print("One argument")
elif len(args) == 2:
print("Two arguments")
return func(*args, **kwargs)
return wrapper
@overload_decorator
def method(self, *args):
pass
위 예제에서 overload_decorator
는 메소드에 추가적인 기능을 부여하고, @overload_decorator
를 활용하여 method
에 다양한 동작을 추가할 수 있습니다.
Conclusion
파이썬은 메소드 오버로딩을 기본적으로 지원하지 않지만, 가변 인자나 데코레이터를 활용하여 메소드에 다양한 동작을 추가할 수 있습니다. 이를 통해 메소드 오버로딩과 유사한 효과를 얻을 수 있습니다.
참고문헌:
- Python Documentation: Decorators