개발/Python

[Python] 상속과 오버로딩

aaamy91 2021. 11. 30. 08:57
class Animal():
    def eat(self):
        print("먹는다")

    def walk(self):
        print("걷는다")
    def greet(self):
        print("인사한다")

class Human(Animal):
    def wave(self):
        print("손을 흔든다")

파이썬에서 상속하는 방법은 클래스 생성 후 괄호에 상속받을 클래스를 적는 것이다.

 

오버라이딩은 C++ 과 비슷하다 그냥 자식 클래스에 같은 이름의 함수를 선언하면 된다.

부모 클래스의 함수를 호출하고 싶다면? super() 를 사용하면 된다.

class Animal():
    def eat(self):
        print("먹는다")

    def walk(self):
        print("걷는다")
    def greet(self):
        print("인사한다")

class Human(Animal):
    def wave(self):
        print("손을 흔든다")
    def greet(self):
        self.wave()
        super().greet()

 

파라미터 전달은 아래와 같이 하면 된다.

class Animal():
    def __init__(self, name):
        self.name = name
    def eat(self):
        print("먹는다")
    def walk(self):
        print("걷는다")
    def greet(self):
        print("인사한다")

class Human(Animal):
    def __init__(self, name, hand):
        super().__init__(name)
        self.hand = hand

    def wave(self):
        print("{} 손을 흔든다".format(self.hand))
    def greet(self):
        self.wave()

class Dog(Animal):
    def wag(self):
        print("꼬리를 흔든다")
    def greet(self):
        self.wag()


person = Human("사람", "오른")
person.greet()