본문 바로가기

개발일지/Python159

파이썬 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.
파이썬 class(클래스) 상속 기초원리3 부모class의 상속시 init초기화 super() # parents Class class P_Class: def __init__(self, pNum1, pNum2): print('[P_Class] __init__() called!!') self.pNum1 = pNum1 self.pNum2 = pNum2 # child Class class C_Class(P_Class): def __init__(self,cNum1, cNum2): print('[C_Class] __init__() called!!') self.cNum1 = cNum1 self.cNum2 = cNum2 cls = C_Class(10,20) # 이렇게 C_Class가 P_Class를 상속받고 사용하고자 할때 # P_Class의 init메소드는 값이 초기화되지 않기 때문에 사실상 상속을 못받은거나.. 2022. 5. 20.