(중급) Class, Operator

임경민·2023년 9월 21일
1
post-thumbnail

Summarization


  • 클래스 상속을 통해 다른 클래스의 기능을 활용할 수 있으며, 개발시간 단축의 효과가 있다.
  • 생성자 : 객체가 생성될 때 생성자를 호출하는 것
  • 오버라이딩 : 하위 클래스에서 상위 클래스의 Method를 재정의 하는 것

Contents


  • 클래스 상속 : 다른 클래스의 기능을 활용할 수 있다
    • 상속 : Class3Class2를 상속한다 > Class3에서 Class2의 모든 기능을 사용할 수 있다.
      개발시간 단축의 효과
class NormalCar:

    def drive(self):
        print('[NormalCar] drive() called!')

    def back(self):
        print('[NormalCar] back() called!')

class TurboCar(NormalCar): # 상속하고자 하는 Class를 ()에 기입
    def turbo(self):
        print('[TurboCar] turbo() called!')
  • 생성자 : 객체가 생성될 때 생성자를 호출하면 __init__()가 자동 생성된다.
    • __init__()가 속성을 초기화 한다.
      • 방법 1 : 초기값을 대입하여 고정
      • 방법 2 : 초기값을 init 내 고정
    • 기능의 경우, 상속하면 바로 사용 가능하나, 속성은 __init__ method를 호출해야 속성이 초기화되기 때문에 사용 가능,
      • __init__ 메서드를 호출하거나, super()를 사용하여 속성을 호출할 수 있다.
super() : 상위 클래스(Class)의 속성(Attribute)을 초기화하기 위해 이용
class P_Class:
    def __init__(self, pNum1, pNum2):
        print('[P_class] __init__() called!')
        self.pNum1 = pNum1
        self.pNum2 = pNum2

class C_Class(P_Class):
    def __init__(self, cNum1, cNum2):
        print('[C_class] __init__() called!')

        # P_Class.__init__(self, cNum1, cNum2) # 상위 클래스 속성 호출
        super().__init__(cNum1, cNum2)
        
        self.cNum1 = cNum1
        self.cNum2 = cNum2

cls = C_Class(10, 20)
  • 다중 상속 : 2개 이상의 클래스를 상속하는 것을 의미
    • 다중 상속을 많이 할 경우, 헷갈릴 우려가 발생
    • 꼭 필요한 경우 사용, 남발 X
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
  • 오버라이딩 : 하위 클래스에서 상위 클래스의 Method를 재정의(override) 하는 것

0개의 댓글