-
Python2 05일차 수업 정리_04일차 복습, 상속, 자식클래스, 상속 관계 구현, 자식클래스의 __init__(), 다형성 오버라이딩/예외처리Python 2024. 2. 15. 15:02
- 04일차 복습
- 상속
- 자식클래스
- 상속 관계 구현
- 자식클래스의 __init__()
- 다형성 오버라이딩/예외처리
- 04일차 복습
인스턴스 변수와 클래스 변수
인스턴스 변수 클래스 변수 객체마다 다른값
인스턴스 접근 O
클래스 접근 X공유하는 값
인스턴스 접근 O
클래스 접근 O인스턴스 메소드 클래스 메소드 정적 메소드 인스턴스 호출 O O O 클래스 호출 X O O 데코레이터 X @classmethod @staticmethod 매개변수 self cls 매개변수가 없어도 가능 인스턴스 호출 => 객체명.메소드명()
클래스 호출 => 클래스명.메소드명()
- 상속
이란 기존에 사용중인 클래스를 바탕으로 새로운 요소(메소드)를 추가해 클래스를 다시 정의한는 것==> 클래스의 확장
새로운 클래스(상속을 받은 클래스)는 기존 클래스의 데이터 속성과 메소드를 상속받는 구조
또한, 기존 클래스에 새롭게 필요한 데이터 속성, 메소드를 추가하여 코드 추가 작성 가능
구분 부모클래스 자식클래스 의미 상속해주는 클래스 상속을 받는 클래스 용어 슈퍼클래스 / 기반 클래스 서브 클래스 / 파생 클래스
- 자식클래스
class 부모클래스명 :
def 부모클래스에서 만들 메소드(self, 매개변수) :
self.부모클래스의 데이터 속성 = 매개변수
=> 부모클래스의 데이터 속성은 1개, 메소드는 1개
class 자식클래스명(부모클래스명) :
def 자식클래스에서 추가할 메소드(self, 매개변수) :
self.자식클래스에서 추가할 데이터 속성 = 매개변수
=> 자식클래스의 데이터 속성은 2개, 메소드는 2개 (상속 + 추가)
인스턴스 자료형
print(isinstance(pr1, Person)) # pr1이라는 객체가 Person클래스의 인스턴스 이니? print(isinstance( st1, Student)) # st1이라는 객체가 Student클래스의 인스턴스이니? print(isinstance(st1, Person)) # 자식 클래스의 객체는 부모클래스의 인스턴스가 된다 print(isinstance(pr1, Student)) #부모클래스의 객체는 자식클래스의 인스턴스가 되지 못함
- 상속 관계 구현
이란 => IS - A == ~은 ~이다.
해석할 수 있는 관계를 의미하고 구현한다.
ex) 학생은 사람이다. == Student(자식) is a Person(부모)
- 자식클래스의 __init__()
부모클래스가 없다면 존재 X
자식클래스의 생성자 구현 시 반드시 부모클래스의 생성자를 먼저 호출(모셔)하는 코드 작성
class 부모클래스 :
def __init__(self, 매개변수) :
self.데이터 속성 = 매개변수
class 자식클래스(부모클래스) :
def __init__(self, 매개변수) :
#부모클래스의 생성자 호출
super().__init__(매개변수) #자식 매개변수 -> 수퍼 매개변수 -> 부모 매개
self.데이터 속성 = 매개변수자식클래스의 인스턴스는 부모클래스의 객체는 부모클래스의 인스턴스이고,
자식클래스의 객체는 자식클래스의 인스턴스이면서 부모클래스의 인스턴스
- 다형성 오버라이딩/예외처리
다형성 중 하나인 오버라이딩은 (재정의 : Overriding)
자식클래스의 메소드가 부모클래스의 메소드를 대신해서 사용하는 것.
부모클래스에서 이미 a() 메소드가 존재한다면, 부모생성자가 먼저 호출되기 때문에 부모의 a()가 먼저 메모리에 올라감.
그 다음 자식 메소드를 메모리에 올릴 때 같은 이름의 a()메소드가 선언되면 같은 이름으로 2개가 만들어지는 것이 아닌,
기존에 만들어진 부모의 a()메소드에서 자식에서 작성한 내용을 덮어씌움.
==> 자식객체로 a()메소드를 사용해 재정의된 기능으로 사용시 오버라이딩이라고 함.
실습자료 참고
예외처리(Exception Handling)
파이썬에서 발생하는 각종 오류를 처리하기 위한
예외 발생 시 프로그램이 정상적으로 종료될 수 있도록 다루는 행위
예외 : 개발자가 직접 처리할 수 있는 문제
오류 : 개발자가 처리할 수 없는 복잡한 문제
예외처리의 필요성은
발생된 문제로 인해 프로그램이 비정상적으로 종료되는 것을 방지한다.
어떤 문제가 생겼는지 사용자에게 발생한 문제에 대한 정보를 전달하기 위함이다.
# 오류가 나오는 이유 : 분모에 0 이 들어가면 ZeroDivisionError 발생 # [해결방법] # 1) 분모에 0이 들어가지 않도록 작성 # 2) 예외처리 # 오늘은 1번 num1 = 3 num2 = 0 if num2 == 0: print("0으로 나누는 것은 안된다고!!") else : print(num1 / num2) print("출력끝")
2024.02.15
'Python' 카테고리의 다른 글