JAMONGPROJECT
[DAY15] 상속과 예외처리 본문
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(변수, 클래스이름)은 주어진 변수의 값이 클래스의 인스턴스인지 여부를 반환해 주는 함수!
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #수강료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