JAMONGPROJECT

[DAY15] 상속과 예외처리 본문

Challenge/FASTCAMPUS 30일 챌린지

[DAY15] 상속과 예외처리

JAMONGPROJECT 2023. 3. 6. 16:54


2 추상 클래스와 isinstance

 

추상 클래스

 

- 추상 클래스는 abc 모듈의 ABCMeta 클래스를 상속받아 만든다. 

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

 

From abc import *
Class Abstract(metaclass = ABCMeta):
@abstractmethod
def method(self):
pass
class test(Abstract): 
pass # 이 경우 abstract method인 method를 정의하지 않아서 오류발생

# 추상클래스는 ABCMeta를 상속 받고 추상메소드가 있어야 함
from abc import ABCMeta, abstractmethod
class Abstract1 (metaclass=ABCMeta):
    attr = "추상클래스"
    @abstractmethod
    def m1(self):
        pass
    def m2(self):
        print('대박')
#추상클래스는 객체를 못 만듬
a1 = Abstract1()

from abc import *
class Animal(metaclass=ABCMeta):
    def __init__(self,eat1="그냥"):
        self.eat1 = eat1
    def eat(self): print("먹어야 산다")
    # 추상메서드 상속받은 자식이 재정의 해야 한다
    @abstractmethod
    def move(self): pass
class Bird(Animal):
    def move(self):
        print('하늘을 난다 {}'.format(self.eat1))
class Person(Animal):
    def move(self): print('두발로 걷는다 {}'.format(self.eat1))
class Fish(Animal):
    def move(self): print("지느러미로 헤엄친다")
b1 = Bird();  p1 = Person("대박");  f1 = Fish()
animal = [b1, p1, f1]
for an in animal:
    print('==============')
    an.eat(); an.move()

isinstance

 

isinstance(변수, 클래스이름)은 주어진 변수의 값이 클래스의 인스턴스인지 여부를 반환해 주는 함수!


 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

http://bit.ly/3Y34pE0

 

#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발
#패캠인강후기 #패스트캠퍼스후기 #오공완

#한번에끝내는컴퓨터공학전공필수&인공지능심화초격차패키지Online

'Challenge > FASTCAMPUS 30일 챌린지' 카테고리의 다른 글

[DAY17] 파일 입출력  (0) 2023.03.08
[DAY16] 상속과 예외처리  (0) 2023.03.07
[DAY14] 상속과 예외처리  (0) 2023.03.05
[DAY13] 클래스  (0) 2023.03.04
[DAY12] 클래스  (0) 2023.03.03
Comments