Python의 메서드 오버로딩에 대한 완전한 가이드(예제 포함)

게시 됨: 2022-04-23

오버로딩은 다른 매개변수를 동일한 매개변수에 전달할 때 다르게 작동하는 함수, 메소드 또는 연산자의 기능입니다. Python에서 메서드 오버로딩 또는 함수 오버로딩은 일반적으로 사용되는 용어입니다. 오버로딩의 주요 이점 중 일부는 한 가지 방법을 여러 가지 방법으로 사용할 수 있다는 것입니다. 이는 팀과 함께 작업할 때 코드를 더 깔끔하게 유지하고 복잡성을 제거하는 데 도움이 됩니다.

목차

메소드 오버로딩이란?

개체 지향 프로그래밍에서 메서드 오버로딩은 특정 개체에 대해 프로젝트 요구 사항에 따라 두 가지 이상의 방법으로 특정 메서드를 호출할 수 있는 시나리오에서 사용됩니다.

Python에서 메서드 오버로딩의 예는 기사 뒷부분에서 자세히 설명합니다.

메서드 재정의란 무엇입니까?

Python의 메서드 재정의 는 메서드 재정의가 하위 클래스와 슈퍼 클래스 사이에서 발생한다는 점을 제외하고는 메서드 오버로딩과 유사합니다. 메소드가 호출될 때와 동일한 매개변수를 갖습니다. 그러나 수퍼 클래스에서 일부 기능이 재정의되기 때문에 다르게 동작합니다.

메서드 재정의의 예

클래스 X:

def method1(자체):

print('나는 X 클래스의 첫 번째 기능입니다')

def method2(자체):

print('나는 X 클래스의 두 번째 기능입니다')

클래스 Y(X):

def method1(자체):

print('나는 클래스 Y에 있는 클래스 X의 수정된 첫 번째 기능입니다')

def method3(자체):

print('나는 Y 클래스의 피처입니다')

obj = Y()

obj.method1()

산출:

나는 클래스 Y에 있는 클래스 X의 수정된 첫 번째 기능입니다.

method1은 클래스 Y에 의해 재정의되었습니다.

upGrad에서 온라인으로 데이터 과학 과정 배우기

Python의 메서드 오버로딩

Python에서 메소드 오버로딩의 문제점은 Python이 기본적으로 이를 지원하지 않는다는 것입니다. 그러나 동일한 작업을 수행할 수 있는 해결 방법이 있습니다.

문제

다음 코드를 고려해 보겠습니다.

def add(a, b):

s = a + b

인쇄물)

def add(a, b, c):

s = a + b + c

인쇄물)

# add(8, 9) 오류 표시

추가(8, 9, 2)

언뜻 보기에는 코드가 좋아 보이지만 두 개의 인수로 실행하려고 하면 Python에서 오류를 표시합니다. Python에서는 이름은 같지만 인수 수가 다른 메서드가 두 개 이상 있을 때 가장 최근에 정의된 방법을 사용할 수 있습니다.

파이썬에서 메서드 오버로딩의 이 문제를 극복할 수 있는 두 가지 다른 방법이 있습니다.

1: 같은 방법을 사용해도 인자의 자료형에 따라 다름

데이터 유형을 알 수 있는 인수와 Python의 메소드에 다양한 수의 인수를 전달할 수 있는 *args를 볼 수 있습니다. 그런 다음 if 문을 사용하여 입력에 따라 메서드가 동작하는 방식을 제어할 수 있습니다.

암호:

def add(dt, *args):

dt =='int'인 경우:

s = 0

dt =='str'인 경우:

s = "

x의 경우 인수:

s = s + x

인쇄물)

추가('정수', 11, 9)

add("str", "안녕하세요", "잘 지내세요?")

산출:

20

안녕하세요. 어떻게 지내세요?

이것은 Python에서 메서드 오버로딩을 구현하는 첫 번째 해결 방법이었습니다.

인기 있는 데이터 과학 과정 살펴보기

IIITB의 데이터 과학 대학원 대학원 프로그램 비즈니스 의사 결정을 위한 데이터 과학 전문 인증 프로그램 애리조나 대학교 데이터 과학 석사
IIITB의 데이터 과학 고급 인증 프로그램 메릴랜드 대학교 데이터 과학 및 비즈니스 분석 전문 자격증 프로그램 모든 데이터 과학 코스 보기

2: 다중 디스패치 데코레이터 사용(더 효율적인 방법)

Multiple Dispatch Decorator는 해결 방법이 덜하고 예상대로 정확하게 작동합니다. pip3를 사용하여 설치할 수 있습니다.

pip3 다중 디스패치 설치

암호:

여러 디스패치에서 가져오기 디스패치

@dispatch(int,int) # 2개의 정수 인수

def add(n1,n2):

s = n1 + n2

인쇄물)

@dispatch(int,int,int) # 3개의 정수 인수

def add(n1,n2,n3):

s = n1 + n2 + n3

인쇄물)

@dispatch(float,float,float) # float 인수용

def add(n1,n2,n3):

s = n1 + n2 + n3

인쇄물

추가(5,2)

추가(6,1,4)

추가(3.4,1.2,5.6)

산출:

7

11

10.2

실행 시 디스패처는 메서드의 다양한 구현을 저장하는 새 객체를 만들고 메서드를 호출하는 동안 전달된 인수의 유형과 수에 따라 선택할 메서드를 결정합니다. 이 방법은 파이썬에서 오버로딩하는 것이 더 효율적입니다.

인기 있는 데이터 과학 기사 읽기

데이터 과학 직업 경로: 종합 직업 가이드 데이터 과학 경력 성장: 작업의 미래가 여기에 있습니다 데이터 과학이 중요한 이유는 무엇입니까? 데이터 과학이 비즈니스에 가치를 가져다주는 8가지 방법
관리자를 위한 데이터 과학의 관련성 모든 데이터 과학자가 갖추어야 할 궁극의 데이터 과학 치트 시트 데이터 과학자가 되어야 하는 6가지 이유
데이터 과학자의 하루: 그들은 무엇을 합니까? 잘못된 통념: 데이터 과학에는 코딩이 필요하지 않습니다 비즈니스 인텔리전스 대 데이터 과학: 차이점은 무엇입니까?

결론

데이터 과학 분야에 들어가고 싶다면 Python이 좋은 첫 번째 단계입니다. 주제를 더 깊이 파고들고 더 깊이 연구하려면 upGrad와 함께 IIIT-Bangalore의 데이터 과학 이그 제 큐 티브 프로그램과 같은 고급 온라인 인증 과정을 확인할 있습니다 . 이 프로그램은 주제의 중요한 측면을 다루며 직업 지원, 1:1 멘토링, 온라인 지원, 라이브 강의 및 추가 기술 향상을 원하는 애호가를 위한 선택적 추가 모듈과 같은 많은 추가 혜택을 제공합니다.

파이썬에서 함수와 메소드의 차이점은 무엇입니까?

파이썬에는 내장 함수와 사용자 정의 함수의 두 가지 종류의 함수가 있습니다. print() 및 len()은 내장 함수의 예입니다. 파이썬의 사용자 정의 함수는 일반적인 프로그램에서 특정 작업을 두 번 이상 수행하도록 스스로 정의할 수 있는 함수입니다. 메서드는 클래스에 속하고 개체에서만 호출할 수 있다는 점을 제외하고는 함수와 같습니다. (구문: obj.method())

Python과 R 중에서 어떻게 선택합니까?

Python과 R은 데이터 과학에 가장 많이 사용되는 두 가지 언어입니다. 무엇을 사용할지는 목표로 하는 회사, 프로젝트 유형, 클라이언트 요구 사항 등과 같은 여러 요소에 따라 다르지만 일반적으로 프로그래밍의 초보자이거나 대규모 응용 프로그램을 구축하는 엔지니어링 환경에서 작업하는 경우 Python, 훌륭한 선택입니다. 반면에 프로그래밍 경험이 있고 데이터 분석 작업을 빠르게 실행하고 통계적으로 더 나은 결정을 내리기 위해 아름다운 그래픽을 사용하여 데이터를 시각화하려는 경우 R이 올바른 방법입니다.

데이터 과학을 마스터하는 데 얼마나 걸립니까?

모든 사람은 자신의 학습 속도가 있습니다. 프로그래밍 경험이 전혀 없는 초보자의 경우 기초를 탄탄하게 만드는 데 거의 6-7개월이 걸립니다. 그것을 게시하면 다시 얼마나 연습하고 작업할 프로젝트에 따라 달라집니다. 온라인 인증을 따를 경우 1년 정도면 마스터할 수 있을 것입니다.