아래 코드는 Person이라는 클래스를 만들고, 그 클래스를 상속받아서 Developer라는 클래스를 만들고, Developer 클래스로 d1 객체를 찍어낸 것입니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"제 이름은 {self.name}이고, 나이는 {self.age}입니다.")
class Developer(Person):
def coding(self):
print("코딩을 합니다")
d1 = Developer("심교훈", 36)
d1.introduce()
d1.coding()
위 코드에서 Developer 클래스는 사실상 다음 코드와 동일합니다. 부모 클래스의 __init__() 메서드와 introduce() 메서드가 포함되어 있는 것과 같습니다.
...생략...
class Developer(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"제 이름은 {self.name}이고, 나이는 {self.age}입니다.")
def coding(self):
print("코딩을 합니다")
...생략...
만약 부모 클래스에 없는 속성을 하나 추가하고 싶다면 다음과 같이 super()__init__()을 활용하여 코드를 작성하면 됩니다. language라는 속성을 추가했습니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"제 이름은 {self.name}이고, 나이는 {self.age}입니다.")
class Developer(Person):
def __init__(self, name, age, language):
super().__init__(name, age)
self.language = language
def coding(self):
print(f"{self.language}으로 코딩을 합니다")
d1 = Developer("심교훈", 36, "파이썬")
d1.introduce()
d1.coding()
위 코드에서 super()는 상속받은 부모 클래스 Person을 의미합니다. 따라서 super().__init__()는 부모 클래스의 __init__() 함수를 뜻합니다.
참고자료
[1] https://formal.hknu.ac.kr/ProgInPython/notebooks/PiPy10-OOP_InheritanceAndComposition.html
'Dev > python' 카테고리의 다른 글
[python] dotenv로 각종 키값 관리하기 (0) | 2023.07.01 |
---|---|
[python] platform 모듈로 운영체제 정보 얻기 (0) | 2023.06.30 |
[python] 모듈, 패키지, 라이브러리, 프레임워크 용어 분명히 이해하기 (0) | 2023.06.18 |
[python] poetry 주요 명령어 정리 (0) | 2023.06.17 |
[python] 다른 경로에 있는 모듈 불러와서 사용하기, PYTHONPATH 환경변수 세팅 (0) | 2023.06.15 |
[python] 추상 클래스(abstract class) 이해하기 (0) | 2023.06.14 |
[python] 객체의 속성을 읽고 쓰고 삭제하는 getattr, setattr, delattr 함수 (0) | 2023.06.13 |
[python] 파이썬 인기 formatter, Black으로 코드 스타일을 맞춰보자 (0) | 2023.05.29 |