언어/Python

파이썬의 다형성(Polymorphism)

쟈누이 2020. 6. 20. 19:01
반응형

같은 형태의 코드가 서로 다른 동작을 하는 것을 말한다.

다형성은 코드의 양을 줄이고, 여러 객체 타입을 하나의 타입으로 관리가 가능하게 만들어 코드의 유지보수에 좋다.

왜냐하면, 기존의 코드를 다른 매소드에 오버라이드하여 사용하지 않고

각 메소드마다 기존의 코드와 같은 코드를 사용할 경우에

해당 코드에 문제가 생겼을 때, 각 코드마다 다 들어가서

고쳐야되는 문제점과 비효율성이 발생한다.

 

이를 방지하기 위해 상속에서는 다형성이라는 개념을 받아들여 상속을 하고 나서도

부모 코드만 수정하면 나머지 코드도 수정이 되도록

다형성의 개념이 적용된 것 같다.

 

하지만, 파이썬은 자바나 다른 언어에 비해 다형성은 그렇게 강하진 않는 것 같다.

파이썬에서 다형성이란 즉, 클래스에 상관없이 같은 동작을

다른 객체에 적용할 수 있다는 것을 의미한다고 보면 될 것 같다.

 

JAVA 의 오버로딩과 비슷하다고 보면 될 것 같다. (파이썬은 오버로딩 허용 안함)

 

한 예시로 아래와 같은 클래스를 만들었다.

class quote():
    def __init__(self, person, words):
        self.person = person
        self.words = words
    
    def who(self):
        return self.person
        
    def says(self):
        return self.words + '.'
       
 

그리고 아래와 같이 quote 를 상속했다.

class quote2(quote):
    def says(self):
        return self.words + '?'
        
        
        
 class quote3(quote):
    def says(self):
        return self.words + '!'
        

 

그 후 여러 객체를 만들어서 says( ) 메서드가 위의 두 클래스에서 다른 동작을 하는지 

확인했다

 

확인 결과 says( ) 클래스는 세 클래스에 대해 서로 다른 동작을 제공하며, 

이것은 객체 지향언어에서 나타나는 다형성의 특징이다. 

 

 

참고링크

https://wayhome25.github.io/cs/2017/04/10/cs-11/

 

강의노트 10. [객체지향] 파이썬 추상클래스(abstract class), 다형성(polymorphism) · 초보몽키의 개발공�

강의노트 10. [객체지향] 파이썬 추상클래스(abstract class), 다형성(polymorphism) 10 Apr 2017 | 패스트캠퍼스 컴퓨터공학 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인공부 후 자료를 남기기 위한

wayhome25.github.io

 

반응형