본문 바로가기

개발일지/임시카테고리689

파이썬 class(클래스) 상속 기초원리7 추상클래스 ABCMeta, abstractmethod # 추상클래스 # 상위 클래스에서 하위 클래스에 메서드 구현을 강요한다. from abc import ABCMeta from abc import abstractmethod # 1. 정의가 안되어있고 # 2. 정의를 하위 클래스에서라도 해야한다면 # 정의가 되어야하는 강제성을 지닌 상위 개념의 클래스에 # AirPlane(metaclass=ABCMeta)이런식으로 해준다. class AirPlane(metaclass=ABCMeta): # 이것이 첫번째 작업이다. # 두번째 작업으로는 정의가 되어야할 함수에 표시를 해줘야한다. @abstractmethod # 이렇게 def flight(self): pass def forward(self): print('전진') def backward(self): print(.. 2022. 5. 20.
파이썬 class(클래스) 상속 기초원리6 재정의(오버라이딩) # 첫번째 케이스 로봇 class Robot: def __init__(self,c,h,w): self.color = c self.height = h self.weight = w def fire(self): print('미사일 발사') def printRobotInfo(self): print(f'self.color: {self.color}') print(f'self.height: {self.height}') print(f'self.weight: {self.weight}') class NewRobot(Robot): # 1. 상속을 받았고 # 2. 같은 이름이 함수를 정의해주는 것이고 # 3. 상속받게된 함수의 기능을 사용하고 싶다면 def __init__(self,c,h,w): super().__init__.. 2022. 5. 20.
파이썬 class 기초원리5 다중상속 (음.. 이건 난해하다) # 다중 상속 class Car01: def drive(self): print('drive method called') class Car02: def turbo(self): print('turbo method called') class Car03: def fly(self): print('fly method called') class Car(Car01, Car02, Car03): def __init__(self): pass boor = Car() boor.drive() boor.turbo() boor.fly() # 이쯤되면 궁금해지는게 있다. # 왜 어떨땐 init을 쓰고 어떨땐 안쓰는가 # 초기화라는 개념이 구체적으로 어떤것이며 필요한가 # 뭔가가 이상해서 검색하다 말았다. 나중에 알아보자 class B.. 2022. 5. 20.
파이썬 class 상속 기초원리4 init 메소드 기초활용 super() class MidExam: def __init__(self,s1,s2,s3): print('[MidExam] __init__()') self.mid_kor_score = s1 self.mid_eng_score = s2 self.mid_mat_score = s3 def printScores(self): print(f'mid_kor_score: {self.mid_kor_score}') print(f'mid_eng_score: {self.mid_eng_score}') print(f'mid_mat_score: {self.mid_mat_score}') class EndExam(MidExam): def __init__(self,s1,s2,s3,s4,s5,s6): print('[EndExam] __init__()').. 2022. 5. 20.