파이썬에서 다형성이란 무엇입니까? 예제와 함께 설명하는 다형성
게시 됨: 2021-03-05목차
소개
Python은 높은 수준의 해석된 오픈 소스 프로그래밍 언어입니다. 탐색 데이터 분석, GUI 프로그래밍 등과 같은 많은 작업에 도움이 되는 라이브러리를 지원하기 때문에 많은 프로그래머와 개발자 사이에서 많은 관심을 받았습니다. 또한 파이썬 프로그래밍은 매우 흥미롭습니다.
우리는 이 기사에서 파이썬의 흥미로운 기능에 대해 논의할 것입니다. 시작하겠습니다!
다형성이란 무엇입니까?
다형성이라는 단어는 그리스어 poly(많은 의미)와 morphism(형태)에서 파생됩니다. 이는 단일 함수 이름 또는 메서드 이름이 여러 형식을 가질 수 있음을 의미합니다. 그리고 이것은 구현에서 코드 중복을 피하고자 하는 바램을 충족시킵니다.
그러나 파이썬의 다형성은 다른 프로그래밍 언어의 다형성과 약간 다릅니다. Java 및 C++와 같은 프로그래밍 언어는 컴파일 시간 다형성(메서드 오버로딩)을 지원합니다. 메서드 오버로딩에서 여러 메서드는 메서드 이름이 같지만 매개 변수 서명이 다를 수 있습니다. 이 기능은 파이썬에서 지원하지 않습니다. 여러 메서드에 동일한 기능이 있는 경우 최신 기능 구현이 이전 기능 구현을 재정의합니다.
함수 다형성
파이썬에서 함수 다형성은 사용자 정의 다형성과 미리 정의된 다형성 두 가지로 분류할 수 있습니다.
우리는 사용자 정의 다형성을 구현하여 다른 매개변수 시그니처로 동일한 함수를 호출할 수 있으며 이는 파이썬에서 메소드 오버로딩을 사용할 수 없는 것에 대한 약간의 보상으로 간주될 수 있습니다. 예제 코드를 살펴보겠습니다.
def mul (a,b,c= 1 ): 반환 * b * c; 인쇄(물( 1 , 2 , 3 )) 인쇄(물 ( 1,2 ) ) |
위의 코드에서 전달된 매개변수의 수가 같지 않더라도 두 print 문은 동일한 메소드를 참조합니다. 두 번째 함수 호출에서 매개변수 c에는 기본값 1이 할당됩니다.
마찬가지로 파이썬에서 미리 정의된 메소드는 거의 없으며 단일 메소드가 다른 데이터 유형의 매개변수를 허용할 수 있는 다형성 기능을 나타냅니다. len()과 같은 메서드는 이 기능을 나타냅니다. 그리고 이를 설명하는 코드가 있습니다.
print(len([ 1 , 2 , 3 , 4 ])) 인쇄(len(( 1 , 2 , 3 , 4 ))) print(len( "파이썬" )) print(len({ "키1" : "값1" , "키2" : "값2" })) |
위의 코드에서 동일한 len() 메서드가 목록, 튜플, 문자열 및 사전에 사용됩니다.
확인: 실제 세계의 Python 응용 프로그램
연산자 오버로딩
'+'와 같은 연산자는 여러 가지 방법으로 사용할 수 있습니다. 예를 들어, 두 개의 숫자, 문자열, 목록 등을 추가하는 데 사용할 수 있습니다. 그리고 여기에 이를 보여 주는 코드가 있습니다.
l1=[ 1 , 2 , 3 ] l2=[ 3 , 4 , 5 ] n1= 2 n2= 3 s1= "헤이" s2= "거기" 인쇄(l+l1) 인쇄(s1+s2) 인쇄(n1+n2) |
메서드 재정의
메서드 재정의는 런타임 다형성으로도 간주되며 Java, C++ 및 python과 같은 많은 언어에서 지원됩니다.
이 기능은 상속과 관련이 있습니다. 파이썬의 자식 클래스는 부모 클래스에서 멤버 함수와 멤버 변수를 상속합니다. 그리고 부모 클래스 메서드의 구현이 관련이 없다고 생각되면 자식 클래스에서 해당 메서드를 재정의할 수 있습니다. 그리고 자식 클래스의 요구 사항에 따라 멤버 함수를 수정하는 것을 메서드 재정의라고 합니다.
클래스 two_wheeler : def 연료 (자신): print( "이륜차를 운행하려면 연료가 필요합니다." ) def 용량 (자체): print( "자전거는 최대 2명이 탈 수 있습니다." ) 클래스 electric_bike (two_wheeler): def 연료 (자신): print( "전기 자전거는 배터리로 작동합니다" ) 클래스 가솔린 자전거( two_wheeler ): def 연료 (자신): print( "휘발유 자전거는 휘발유로 달린다" ) 자전거=two_wheeler() ebike=electric_bike() pbike=가솔린 자전거() 자전거.연료() 자전거.용량() ebike.fuel() ebike.capacity() pbike.fuel() pbike.capacity() |
위의 코드에서 two_wheeler는 상위 클래스이고 electric_bike, Petrol_bike는 하위 클래스입니다. 그리고 메서드 fuel(), capacity()는 electric_bike와 petol_bike의 자식 클래스에 의해 상속됩니다. 이제 필요한 경우 메서드 구현을 업데이트할 수 있습니다. electric_bike 클래스 내에서 fuel() 메서드를 다시 구현했으며, 유사하게 petol_bike 클래스에서 fuel() 메서드를 다시 구현했습니다.
예를 들어 코드에서 ebike.fuel()은 "전기 자전거는 배터리로 작동됨"을 인쇄하고 pbike.fuel()은 가솔린으로 달리는 가솔린 자전거를 인쇄합니다.
클래스 메서드의 다형성
Python은 다른 클래스가 동일한 메소드 이름을 가질 수 있도록 허용하며 이는 다형성 기능에 속합니다. 그리고 메서드 호출은 메서드를 호출하는 데 사용하는 개체를 기반으로 합니다.
클래스 자전거 : def 연료 (자신): print( "자전거에는 연료가 필요 없습니다!" ) def 용량 (자체): print( "자전거는 1인 탑승에 적합합니다." ) 클래스 electric_bike : def 연료 (자신): print( "전기 자전거는 배터리로 작동합니다" ) def 용량 (자체): print( "전기 자전거는 최대 2명이 탑승할 수 있습니다." ) 클래스 가솔린_바이크 : def 연료 (자신): print( "휘발유 자전거는 휘발유로 달린다" ) def 용량 (자체): print( "휘발유 자전거는 최대 2명이 탈 수 있습니다." ) 에코바이크=자전거() ebike=electric_bike() pbike=가솔린 자전거() l=[에코바이크,전자바이크,피바이크] l 에 있는 obj 의 경우: obj.연료() obj.capacity() |
위의 코드에서 우리는 세 가지 클래스 Bicycle, electric_bike, 그리고 petol_bike의 세 가지 객체를 생성했습니다. 그리고 세 클래스 모두 동일한 메서드 이름을 갖습니다. 이제 메서드를 호출하는 데 사용되는 개체 유형에 따라 호출해야 하는 메서드를 결정하는 것은 컴파일러의 작업입니다.
예를 들어, ecobike.fuel()은 자전거 클래스의 fuel() 메서드를 호출하고 ebike.fuel()은 electric_bike 클래스의 fuel() 메서드를 호출합니다. 이 모든 객체를 목록에 추가하고 모든 반복에서 동일한 함수 이름을 호출하지만 메서드를 호출하는 객체 유형이 변경됩니다. 첫 번째 반복에서는 Bicycle 클래스의 메서드가 호출되고, 전기 자전거의 메서드는 추가 반복에서 Petrol_bike가 호출됩니다.
읽기: Python 프로젝트 아이디어 및 주제
결론
이 기사에서 우리는 다형성이 무엇을 의미하는지 이해했고 메소드 오버로딩의 경우 파이썬이 어떻게 다른지 논의했습니다. 연산자 오버로딩, 함수 다형성, 메서드 재정의 및 클래스 메서드의 다형성과 같은 파이썬에서 다형성의 다양한 가능성에 대한 데모를 살펴보았습니다.
이제 파이썬의 다형성을 알았으므로 이 모든 기능을 사용하여 다음 파이썬 코드를 구현하십시오!
데이터 과학에 대해 자세히 알아보려면 IIIT-B & upGrad의 데이터 과학 PG 디플로마를 확인하십시오. 이 디플로마는 실무 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크샵, 업계 전문가와의 멘토링, 1- 업계 멘토와 일대일, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.