강의로 돌아가기
-

부모 클래스의 여러 값중 하나만 불러오기?

강의 말미에 부모 클래스의 값 중 가져와서 쓰고 싶은 것만 사용한다는 내용으로 말씀해주셔서
부모 클래스의 매개변수가 여러개일 경우에도 가능한지 알아보려고 Animal클래스 init에 age를 추가했습니다.
그리고 Human 클래스는 name, age, hand 이렇게 설정한 뒤 Animal 클래스에서 age는 제외하고 name만 가져오고 나머지는 새로 Human 클래스에서 설정해줄 수 있지 않을까 싶어서 아래와 같이 코드를 작성해봤는데요, 에러가 뜹니다. 그렇다면 부모 클래스를 super().init으로 불러올 때 형식에 정확하게 다 맞춰야 한다는 말인가요? 궁금합니다. ;;

class Animal():

    def __init__(self, name, age):
        self.name = name 
        self.age = age 

    def walk(self):
        print('걷는다')

    def eat(self):
        print('먹는다')

    def greet(self):
        print('{}살 먹은 {}이/가 인사한다'.format(self.age, self.name))

class Human(Animal):

    def __init__(self, name, age, hand):
        super().__init__(name)
        self.age = age
        self.hand = hand


    def wave(self):
        print('{}손을 흔들면서'.format(self.hand))

    def greet(self):
        self.wave()
        super().greet()

person = Human('사람',31,'오른')
person.greet()
1 개의 답변
프로그래머스

네. 생성자를 호출할 때에는 생성자의 형식에 맞게 호출해야합니다.

이 경우

class Human(Animal):
    def __init__(self, name, age, hand):
        super().__init__(name) # 여기             

에서 super 클래스(Animal 클래스)의 init 메소드는 생성자를 2개 받으므로(name과 age), 파라미터를 두 개 전달해줘야합니다.
하지만 코드상에서는 name 하나만을 파라미터로 전달하셨네요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.