파이썬 부모 클래스의 메소드 호출 시 None이 표시됩니다.

조회수 2206회
class Animal:
    def __init__(self, name):
        self.name = name

    def get_name(self):
        print("name:", self.name)

    def speak(self):
        pass


class Dog(Animal):
    def speak(self):
        print("bark")


dog = Dog("doggy")
print(dog.get_name())

위 코드를 출력하면 결과가 아래와 같습니다.

name: doggy
None

부모 클래스인 Animal의 get_name() 메소드 자체는 정상적으로 호출되는 것 같은데...

None은 어디서 나온 건가요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • self.name의 출력은 get_name에서 수행되며 반환값이 명시되어 있지 않으므로 반환값은 None이 됩니다.
    이 값을 또 출력하니 None이 출력되는 것이죠.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 잘 생각을 해보세요.

    get_name 메소드에서 print("name:", self.name) 출력을 합니다

    print(dog.get_name()) 이 구문은 get_name 메소드의 결과를 출력합니다.

    그런데...get_name 메소드는 결과가 None 입니다.

    In [5]: print(None)
    None
    
    In [6]: a = dog.get_name()
    name: doggy
    
    In [7]: print(a)
    None
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)