- [Python] 파이썬 오버라이딩과 오버로딩2023년 05월 16일
- 조별하
- 작성자
- 2023.05.16.:08
🍃 파이썬에서의 다형성
Java 언어의 다형성을 다루면서 오버라이딩과 오버로딩에 대해 알아보았다. 그렇다면 Python에서도 언어의 다형성이 있는지 살펴보려고 한다.
[Java] Java 다형성과 오버로딩, 오버라이딩
🍃 Java 다형성 ✔️ 다형성 이란 하나의 함수, 클래스가 다양한 방법으로 동작하는 것을 말한다. Java에서는 주로 오버로딩(Overloading)과 오버라이딩(Overriding) 을 통해서 다형성을 지원한다. 🌱 오
geminihoroscope.tistory.com
🌱 오버로딩(Overloading)
✔️ 파이썬에서는 오버로딩을 정식으로 지원하지 않는다고 한다. 하지만 구현은 가능하지만 오버로딩을 남발하면 코드가 복잡해진다.
✔️ 파이썬에서는 연산자 오버로딩을 사용할 경우가 많이 있는데 이는 연산자(더하기, 빼기, 나누기, 곱하기)를 객체끼리 사용할 수 있게 하는 기법으로 연산자 오버로딩을 사용하면 아래와 같이 동작할 수 있다.
class HouseCho: lastname = "조" def __inint__(self, name): self.fullname = self.lastname + name def __add__(self, other): print(f"{self.fullname}, {other.fullname} 결혼했네") class HouseLee(HouseCho): lastname = "이" def travel(self, where, day): print(f"{self.fullname}, {where}여행 {day}일 가네.") pey = HouseCho("응용") juliet = HouseLee("줄리엣") print(pey + juliet) <---- 연산자 오버로딩 호출 조응용, 이줄리엣 결혼했네.
🌱 오버라이딩(Overriding)
✔️ 오버라이딩은 부모 클래스에서 정의한 함수를 자식 클래스에서 변경하거나 상속받아 사용하는 것을 의미한다. 부모 클래스의 함수 이름, 기본적인 기능은 그대로 사용하지만 원하는 함수를 커스텀 하여 사용할 때 사용한다.
class HouseCho: lastname = "조" def __init__(self, name): self.fullname = self.lastname + name def travel(self,where): print("{0}, {1} 여행을 가다." .format(self.fullname, where)) def love(self, other): print("{0}, {1} 사랑에 빠졌네." .format(self.fullname, other.fullname)) def __add__(self, other): print("{0}, {1} 결혼했네." .format(self.fullname, other.fullname)) class HouseLee(HouseCho): lastname = "이" def travel(self, where, day): print("{0}, {1}{2} 여행 가네." .format(self.fullname, where, day)) cho = HouseCho("이야") cho.travel("1개월") lee = HouseLee("정아") lee.travel("2개월", "15일")
'LANGUAGES > Python' 카테고리의 다른 글
[Python] format(천단위 콤마 삽입하기) (0) 2023.05.04 [Python] 웹 크롤러 만들기 with Requests/BeautifulSoup (2) 2023.04.17 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)