파이썬 심화(상속과 예외처리)

오상윤·2022년 12월 30일
0

파이썬 심화

목록 보기
5/9

상속과 예외처리

상속

  • 한 클래스가 다른 클래스로부터 데이터 속성과 메서드를 물려받는 것
  • 상속하는 클래스를 기반(base)클래스 또는 상위(super)클래스
  • 상속받는 클래스를 파생(derived) 또는 하위(sub) 클래스라고 한다.
  • supper() 이용하면 부모에게 정의된 함수를 불러올 수 있다.
  • 메소드 이름이 같으면 나중에 만들어진 메소드를 사용
  • 다중 상속도 가능하다.
class a:
    def 함수1(self, 변수1, 변수2, ....):
        return 결과
class b(a):
    def 함수2(self, 변수1, 변수2, ...):
        return 결과
# 클래스 b는 아래와 같음
class b:
    def 함수1(self,변수1,변수2, ...):
        return 결과
    def 함수2(self,변수1,변수2, ...):
        return 결과
class add_calculator:
    def addition(self,x,y):
        return x+y
class good_calculator(add_calculator):
    def substraction(self,x,y):
        return x-y
calc2 = good_calculator()
calc2.addition(3,4)
# 7 출력
calc1 = add_calculator()
calc1.addition(3,4)
# 7 출력
class add_calculator:
    def addition(self,x,y):
        print(x+y)
class good_calculator(add_calculator):
    def addition(self,x,y):
        # 부모의 addition 메소드를 불러와서 print(x+y)가 될것이다.
        print(super().addition(x,y))
        print("또?")
        print(super().addition(x,y))

추상클래스와 instance

추상 클래스

  • abc 모듈의 ABCMeta 클래스를 상속받아 만든다. 이때 반드시 metaclass=메타클래스이름의 형태로 상속받는다
  • 자신의 객체를 생성할 수 없다
  • 추상 메소드라는 @abstractmmethod 데코레이터를 사용하여 자신의 하위 객체에게 특정 메소드의 생성을 강제할 수 있다.
  • 이름만 존재하고 내용은 없다

instance

  • 주어진 변수의 값이 클래스의 인스턴스인지 여부를 반환해주는 함수
  • isinstance(변수, 클래스이름)
from abc import *
class abstract(metaclass = ABCMeta):
    @abstractmethod
    def method(self):
        pass
class test(abstract):
    pass
a = 3
isinstance(a, int)
# True

예외처리

try:
    에러 문장
# Exception as e는 발생한 에러문이 string형태로 e에 저장
except Exception as e:
    에러 났을때 출력할 문장
else:
    에러가 안 나면 실행할 문장
finally:
    에러 발생 여부와 상관없이 실행될 문장
profile
가보자가보자~

0개의 댓글