2023-06-15 20:02:48

아래 코드는 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