파이썬 다형성 예제

이것은 파이썬이 이러한 개체의 각 클래스 형식을 정확히 알지 못하고 신경 쓰지 않고 이러한 메서드를 사용하고 있음을 보여줍니다. 즉, 이러한 메서드를 다형성 방식으로 사용합니다. EAFP는 허가보다 용서를 구하기가 더 쉬운 파이썬 약어입니다. 이 코딩 스타일은 오리 타이핑 개념에 완전히 의존하기 때문에 Python 커뮤니티에서 매우 밀려 나기 때문에 언어 철학에 잘 어맞습니다. 다형성이 프로그래밍 언어로 가져오려는 또 다른 실제 개념은 특수한 형식에서 코드를 실행하는 클래스 계층 구조를 걷는 기능입니다. 이것은 우리가 매일 하는 데 사용되는 무언가를 말하는 복잡한 문장이며, 예를 들어 문제를 명확히 할 것입니다. 함수 및 개체가 있는 다형성: 모든 개체를 취할 수 있는 함수를 만들어 다형성을 허용할 수도 있습니다. 이 예제에서는 “obj”라는 이름을 지정하는 개체를 취할 “func()”라는 함수를 만들어 보겠습니다. `obj`라는 이름을 사용하고 있지만 인스턴스화된 개체는 이 함수에 호출할 수 있습니다.

다음으로 함수에 전달한 `obj` 개체를 사용하는 작업을 제공할 수 있습니다. 이 경우 세 가지 메서드인 viz., capital(), 언어() 및 type()을 호출할 수 있으며, 각각은 `India`와 `USA`라는 두 클래스에 정의되어 있습니다. 다음으로, `인도`와 `미국` 클래스가 아직 없는 경우 인스턴스화해 보겠습니다. 그와 함께, 우리는 동일한 func() 함수를 사용하여 자신의 작업을 호출 할 수 있습니다 : 당신이 볼 수 있듯이, 두 번째 스니펫은 직접 방법을 사용하고 가능한 AttributeError 예외를 처리 (그런데: 예외 관리는 파이썬에서 최고의 블랙 매직 토픽 중 하나입니다, 자세한 에 향후 게시물에. 매우 빠른 미리보기 : 나는 우리가 에를랑에서 뭔가를 배울 수 있다고 생각 – 이것을 확인하십시오). 다형성이란 무엇인가 : 다형성이라는 단어는 여러 형태를 갖는 것을 의미합니다. 프로그래밍에서 다형성은 서로 다른 형식에 대해 사용중인 동일한 함수 이름(그러나 다른 서명)을 의미합니다. 누구든지 나에게 다형성의 실제 생활, 실용적인 예를 줄 수 있습니까? 내 교수는 내가 + 연산에 대해 항상 들었던 것과 같은 오래된 이야기를 알려줍니다. a +b = c 및 2+2 = 4이므로 다형성입니다.

나는 많은 책에서 이것을 읽고 다시 읽었기 때문에 그러한 정의와 자신을 정말로 연관시킬 수 없다. 파이썬에서는 super() 함수를 사용하여 부모 클래스 메서드를 호출합니다. 따라서 위의 코드는 Shape 클래스의 __init___() 메서드를 호출합니다. 이는 부모 클래스의 특성 값을 설정하는 데 필요합니다. 그렇지 않으면 getter 또는 setter 메서드를 사용하여 부모 클래스에 정의된 특성 값에 액세스하려고 하면 오류가 발생합니다. 파이썬에서는 하위 유형 다형성을 구현하기 위해 특별한 언어 기능을 제공 할 필요가 없습니다. 우리가 이미 발견 한 바와 같이 Python 함수는 형식을 확인하지 않고 변수를 수락하고 변수 자체에 의존하여 올바른 방법을 제공합니다. 그러나 파이썬이 처음부터 하위 유형 다형성을 구현하는 것을 볼 수 있도록 하위 유형이 부모 형식의 메서드를 재정의하거나 암시적 위임을 통해 제공해야한다는 것을 이미 알고 있습니다. 파이썬에서 모든 클래스는 개체 클래스에서 암시적으로 상속됩니다. 이는 다음 두 클래스 정의가 동일하다는 것을 의미합니다. 다형성을 통해 다른 개체가 함수와 메서드를 유사한 방식으로 활용할 수 있으므로 이 Python 기능을 사용하면 개체 지향 코드의 유연성과 확장성이 향상됩니다.

당신이 볼 수 있듯이 매우 간단한 클래스는 다형성을 예시하기에 충분합니다. Room 클래스는 문 변수를 허용하며 이 변수의 유형은 지정되지 않습니다. 행동에 오리 입력 : 문 실제 유형이 선언되지 않은, 언어에 내장 된 “수용 테스트”가 없습니다. 실제로 들어오는 변수는 Room 클래스에 사용되는 다음 메서드를 내보내야 합니다. 따라서 파이썬 다형성에서 다음 클래스를 빌드할 수 있는 것은 주요 개념 중 하나이며 기본 제공 기능이라고 말할 수 있습니다.