다형성과 상속은 코드 재사용성, 모듈성 및 확장성을 달성하는 데 도움이 되는 객체 지향 프로그래밍(OOP) 의 두 가지 중요한 개념입니다.
다형성: 다형성은 객체 또는 메서드가 여러 형태나 행동을 취할 수 있는 능력을 말합니다. 이를 통해 서로 다른 클래스의 객체를 공통 슈퍼클래스의 객체로 취급할 수 있습니다. 간단히 말해서 다형성은 “하나의 인터페이스, 다중 구현”을 의미합니다.
상속: 상속은 기존 클래스(base/parent class)를 기반으로 새 클래스(derived/child class) 를 만들 수 있는 OOP의 메커니즘입니다. 파생 클래스는 기본 클래스의 속성과 동작을 상속하지만 새 속성과 동작을 추가하거나 상속된 속성 및 동작을 수정할 수도 있습니다.
요약하자면, 다형성을 사용하면 서로 다른 클래스의 객체를 공통 슈퍼클래스의 객체로 취급할 수 있으므로 코드가 서로 다른 객체에 대해 일관되고 유연한 방식으로 작동할 수 있습니다. 한편, 상속을 사용하면 기존 클래스를 기반으로 새 클래스를 쉽게 만들 수 있으므로 코드 재사용과 확장성을 높이는 동시에 객체 간의 실제 관계를 모델링할 수 있습니다.
이 단원에서는 Amazon Q Developer를 활용하여 객체 지향 프로그래밍, 특히 다형성 및 상속 개념에 중점을 둔 예제를 만들어 보겠습니다.Amazon Q Developer는 다음 프롬프트를 사용하여 클래스를 생성하는 데 사용됩니다.
VSCode에서 파일을 생성하고 이름을 polymorphism.py로 지정하고 다음 코드를 입력합니다.
"""Create a function with classes and objects to implement polymorphism with inheritance, using the following contentCountry, Language spoken and capital for India and USA as 2 functions with inheritance"""
제안을 수락하려면 Enter 키를 계속 누릅니다. Amazon Q Developer가 다음 코드를 생성합니다.
Amazon Q Developer 제안
예시 #2
User 클래스 계속해서 생성
Enter 키를 계속 누르면 Amazon Q Developer가 계속해서 클래스를 추가/생성합니다.
일반적인 프롬프트
Python 프롬프트
코드 제안의 끝으로 가서 Enter 키를 누릅니다. 그러면 Amazon Q Developer가 클래스에 다음 코드를 추가할 것입니다.
class Country:
def __init__(self, name):
self.name = name
def capital(self):
pass
def language(self):
pass
class India(Country):
def capital(self):
return "New Delhi"
def language(self):
return "Hindi"
class USA(Country):
def capital(self):
return "Washington DC"
def language(self):
return "English"
CREATE objects of classes India and USA and print their capital and language
"""
CREATE objects of classes India and USA and print their capital and language
"""
india = India("India")
print(india.capital()) # New Delhi
print(india.language()) # Hindi
usa = USA("USA")
print(usa.capital()) # Washington DC
print(usa.language()) # English