반응형
같은 형태의 코드가 서로 다른 동작을 하는 것을 말한다.
다형성은 코드의 양을 줄이고, 여러 객체 타입을 하나의 타입으로 관리가 가능하게 만들어 코드의 유지보수에 좋다.
왜냐하면, 기존의 코드를 다른 매소드에 오버라이드하여 사용하지 않고
각 메소드마다 기존의 코드와 같은 코드를 사용할 경우에
해당 코드에 문제가 생겼을 때, 각 코드마다 다 들어가서
고쳐야되는 문제점과 비효율성이 발생한다.
이를 방지하기 위해 상속에서는 다형성이라는 개념을 받아들여 상속을 하고 나서도
부모 코드만 수정하면 나머지 코드도 수정이 되도록
다형성의 개념이 적용된 것 같다.
하지만, 파이썬은 자바나 다른 언어에 비해 다형성은 그렇게 강하진 않는 것 같다.
파이썬에서 다형성이란 즉, 클래스에 상관없이 같은 동작을
다른 객체에 적용할 수 있다는 것을 의미한다고 보면 될 것 같다.
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/
반응형
'언어 > Python' 카테고리의 다른 글
[python] : for in 반복문, range, enumerate (0) | 2020.07.15 |
---|---|
Python namedtuple (네임드 튜플) (2) | 2020.06.22 |
파이썬 데코레이터에 대해서? (0) | 2020.06.20 |
[pandas] : 판다스 전처리 할때 도움될만한 코드들 (0) | 2020.06.11 |
Python side project 04 : binary search (이진 탐색) (0) | 2020.05.28 |