패스트캠퍼스_컴공전공필수+인공지능/0원 챌린지
2/28(화) 상속과 예외처리
2EV
2023. 2. 28. 23:15
1. 상속
- 클래스의 계층구조
- 부모 -> 자식 -> 자식 ...
- 상속이란?
- 클래스의 상속 : 한 클래스가 다른 클래스로부터 데이터 속성(=변수)과 메소드(=함수)를 물려받는 것.
- 상속하는 클래스
- => 기반 클래스 (base 클래스) or 상위 클래스 (super 클래스)
- 상속 받는 클래스
- 파생 클래스 (derived 클래스) or 하위 클래스 (sub 클래스)
- 파이썬 => 상속 하는 법
- class A :
- def 함수1 (self, 변수, 변수) :
- return 결과
- def 함수1 (self, 변수, 변수) :
- class B (A):
- def 함수2 (self, 변수, 변수):
- return 결과
- def 함수2 (self, 변수, 변수):
- class B 는 A를 상속받으므로 A의 함수1 도 사용 가능하며 B의 함수 2 도 사용 가능하다.
- class A :
- 파생 클래스, 하위 클래스, (자식)에서 -> 상속 -> 부모의 기능을 불러오려면?
- super() 이용하면 부모에게 정의된 함수를 불러올 수 있다.
- ex)
- class 클래스1:
- def 함수1(self, 변수, 변수):
- 결과~~
- def 함수1(self, 변수, 변수):
- class 클래스2(클래스1):
- def 함수2(self, 변수, 변수):
- super().함수1(변수, 변수) # super() => 부모의 메소드를 불러와서 사용할 수 있다.
- 행동
- super().함수1(변수, 변수)
- def 함수2(self, 변수, 변수):
- overriding 오버라이딩
- 만약에, 부모의 메소드와 이름이 똑같은 메소드를 자식에게 정의하면?
- class A : #
- def method(self, 변수):
- 결과
- def method(self, 변수):
- classB(A):
- def method(self, 변수):
- 다른 결과
- def method(self, 변수):
- class C(A,B):
- pass # 패스는 아무것도 안하고 오류 안나게 빈칸 바워놓는 방법이다.
- ==> 위와 같은 상황에서 C는 A,B중 어떤 함수를 상속받을까?
- 먼저 입력한 A의 함수를 상속받는다.
- class A : #
- 만약에, 부모의 메소드와 이름이 똑같은 메소드를 자식에게 정의하면?
2. 추상 클래스와 isinstance
- 추상 클래스는 abc 모듈의 ABCMeta 클래스를 상속받아 만든다.
- 이때 반드시 metaclass=메타클래스 이름 의 형태로 상속받는다.
- 추상 클래스는 자신의 객체를 생성할 수 없다.
- 추상 메소드라는 @abstractmethod 데코레이터를 사용하여 자신의 하위객체에게 특정 메소드의 생성을 강제할 수 있다.
- 예시로 알아보자)
- From abc import * # abc모듈의 모든것을 import -> ABCMeta 클래스도 임포트 될 것이다.
- Class Abstract(metaclass = ABCMeta):
- @abstractmethod #다음과 같은 데코레이터로 설정해주면 해당 메소드(함수)는 상속할 시 자식에서 재정의를 꼭 해줘야한다.
- def method(self):
- pass
- class test(Abstract):
- pass # 이 경우 abstractmethod 인 method 를 정의하지 않아서 오류가 발생한다. -> 자식에서 메소드 생성 강제하는 것과 같다.
- 예시로 알아보자)
- 추상 메소드는 이름만 존재하고 내용은 없다.
- instance
- instance (변수, 클래스 이름)은 주어진 변수의 값이 클래스의 인스턴스인지 여부를 반환해 주는 함수
* 필수 삽입 링크 : http://bit.ly/3Y34pE0
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
<사진 2장>
> 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.