Python/Python 정리

[Python] super() 메서드 정리

우준세 2022. 7. 6. 21:03
728x90
반응형

 

이번 포스팅은 딥러닝 모델을 공부하면서 나왔던 super() 메서드에 대한 것을 정리했습니다. super()를 사용하기 전 클래스나 상속, 오버라이딩에 대해 알고 있어야 이해가 조금 더 쉽습니다! 여기로 들어가 가볍게 보시는 것을 추천드립니다! 


| 부모 클래스의 인스턴스 속성 사용 

- 먼저 super()를 사용하지 않고 부모 클래스를 상속받아 인스턴스 속성을 사용해보겠습니다.

 

| 코드 

- 먼저 Parent 클래스의 parentHi 속성이 있고 Parent를 상속받아 만든 Child 클래스 안에는 childHi속성이 있습니다.

 

class Parent():
  def __init__(self):
    print("Parent init") 
    self.parentHi = "부모 클래스"

class Child(Parent):
  def __init__(self):
    print("Child init") 
    self.childHi = "자식 클래스"

child = Child()
print(child.hi)
print(child.hello)

 

| 결과

 

 

- 실행을 해보면 child.hi은 잘 호출이 되지만 상속받은 parent의 속성을 호출을 못했는데 에러가 발생한 이유는 parent의 __init__ 메서드가 실행되지 않았기 때문입니다. 즉, Parent 클래스의 __init__이 실행되지 않았기 때문에 parentHi 속성이 존재하지 않기 때문에 발생하는 에러입니다.


| super() 메서드를 사용하여 부모 클래스의 __init__ 호출 

- 위 에러를 해결하기 위해 super() 메서드를 사용해 부모 클래스의 __init__ 을 호출합니다.

 

| 코드

- 코드는 간단합니다. 앞서 만든 Child 클래스에 super().__init__ 만 추가하면 됩니다.

 

class Parent():
  def __init__(self):
    print("Parent init") 
    self.parentHi = "부모 클래스"

class Child(Parent):
  def __init__(self):
    super().__init__()    
    print("Child init") 
    self.childHi = "자식 클래스"

child = Child()
print(child.childHi)
print(child.parentHi)

 

| 결과

 

 

- 실행 결과를 보면 super().__init__이 실행되어 Parent의 __init__()이 호출되었고 그다음 Child의 __init__() 호출, childHi 속성, parentHi 속성이 호출된 것을 볼 수 있습니다.

즉, super().__init__ 이란 상속받은 클래스의 __init__() 메서드를 호출해주는 것입니다. 


super().__init__()에 대해 정리해보았습니다.

틀린 점이나 질문이 있으시면 댓글로 남겨주세요!

 

다음 포스팅으로 찾아오겠습니다 감사합니다 :) 

 

 

 

 

728x90
반응형