2023년 6월 업데이트

 

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 중급 강좌 - 4. 상속(Inheritance)을 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 4_inheritance.py를 생성하고 코드를 실행합니다.

 

 

 

TL;DR

Python 클래스는 다른 클래스의 모든 메서드와 특성을 상속할 수 있습니다. 자식 클래스가 부모 클래스의 메서드와 속성에 액세스할 수 있는 방법을 설명하고, 인스턴스 및 하위 클래스를 확인하는 방법에 대해 설명합니다. 
 

 

Python 중급 강좌 - 4. 상속(Inheritance)

상속은 다른 클래스의 모든 메서드와 속성을, 상속하는 클래스에서 정의해 사용할 수 있습니다. 부모(parent) 또는 기본(base) 클래스는 상속되는 클래스입니다. 자식(child) 또는 파생(derived) 클래스는 다른 클래스에서 상속하는 클래스입니다.

 

클래스 상속 코드 예제

먼저, 클래스 상속 예제를 살펴보면서 설명드리겠습니다.

class Person:
    def __init__(self, name):
        self.name = name
    def say_hello(self):
        print('Hello, ' + self.name)

class Student(Person):
    def __init__(self, name, school):
        super().__init__(name)
        self.school = school
    def sing_school_song(self):
        print('Ode to ' + self.school)
    def __str__(self):  # 오버라이딩
        return self.name

student = Student('Christopher', 'UVM')
student.say_hello()
student.sing_school_song()

# 누구신가요?
print(isinstance(student, Student))
print(isinstance(student, Person))
print(issubclass(Student, Person))

print(student)  # 오버라이딩 출력

전형적인 예제입니다, 학생(Student)은 사람(Person)으로부터 상속받습니다.

상속받은 Student는 Person의 모든 속성과 메서드를 포함하고 있습니다.

 

클래스 상속 코드 설명

이렇게 student 인스턴스를 생성합니다.

student = Student('Christopher', 'UVM')

당연히, Person으로부터 상속받았으니, Person의 모든 속성과 메서드를 가지고 있습니다.

 

메서드를 실행하면, Person 클래스의 say_hello 메서드가 실행됩니다.

student.say_hello()

 

sing_school_song 메서드를 호출하면 Student 클래스에 정의된 메서드를 호출하게 되죠.

student.sing_school_song()

 

흥미로운 부분은 부모 클래스의 메서드를 다이렉트로 호출할 수 있는 super() 메서드입니다.

class Student(Person):
    def __init__(self, name, school):
        super().__init__(name)
        self.school = school

이렇게, Student 클래스 생성자에서 부모 클래스인 Person의 __init__을 호출합니다. 이때 super()를 이용하게 됩니다.

물론 명시적으로 Person.__init__(self)를 호출하는 방법도 가능하나, 기본 부모클래스를 자동 매핑하기 때문에, 부모클래스명이 변경되어도 신경쓰지 않고 코드를 유지 가능합니다. 

 

클래스의 인스턴스 또는 서브클래스 체크

끝으로, 클래스의 인스턴스인지 체크하는 isinstance() 함수와 자식클래스인지 확인하는 issubclass() 통해 체크 가능합니다.

우리의 코드에서는 이렇게 체크하고 있으며, 모든 결과는 True가 리턴됩니다.

# 누구신가요?
print(isinstance(student, Student))
print(isinstance(student, Person))
print(issubclass(Student, Person))

 

오버라이딩(overriding)

예를 들어, 다음과 같이 클래스에 __str__ 메서드가 정의되어 있습니다.

class Student(Person):
    def __init__(self, name, school):
        super().__init__(name)
        self.school = school
    def sing_school_song(self):
        print('Ode to ' + self.school)
    def __str__(self):
        return self.name

__str__ 메서드는 Python의 기본 메서드로, 인스턴스의 스트링 표현 시 사용됩니다. 보통 인스턴스의 간단 정보가 표시됩니다.

이렇게 오버라이딩을 이용해 __str__ 메서드를 재정의 할 수 있습니다.

 

☑️ 챗GPT 활용: python 클래스 오버라이딩에 대해 설명해 줘

 

아래처럼, print를 해보면, 위의 클래스 __str__ 정의대로 name이 출력되어 'Christopher'가 리턴됩니다.

print(student)

이렇게 오버라이딩을 이용해 다양한 클래스의 메서드 등을 재정의 할 수 있습니다.

 

수고 많으셨습니다.

 

 

파이썬 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터 

파이썬-책구매링크.png

 

참고자료

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

개발자 커뮤니티 SQLER.com - Python 중급 강좌 - 3. 클래스(Class)

c9-python-getting-started/more-python-for-beginners/04 - Inheritance at master · CloudBreadPaPa/c9-python-getting-started (github.com)

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 22182
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12260
» Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 241
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 299
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 413
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 956
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패스워드) 관리 - dotenv 코난(김대우) 2021.01.02 833
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 254
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 710
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 867
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 294
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 232
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 421
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 215
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 269
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 223
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 264
83 Python 초급 강좌 목차 - 8. 조건문(Condition):1 (IF-ELSE) 코난(김대우) 2021.01.01 254
82 Python 초급 강좌 목차 - 7. 에러 핸들링(Error Handling) file 코난(김대우) 2021.01.01 298
81 Python 초급 강좌 목차 - 6. 날짜와 시간 데이터 처리 코난(김대우) 2021.01.01 316
80 Python 초급 강좌 목차 - 5. 숫자(Numeric) 데이터 처리 코난(김대우) 2021.01.01 255
79 Python 초급 강좌 목차 - 4. 문자열(String) 데이터 처리 코난(김대우) 2021.01.01 329





XE Login