[파이썬] super().__init__()

폼폼(YUNA AN)·2024년 9월 29일

Chat GPT로 공부하기

목록 보기
10/14
post-thumbnail
class SimpleDNN(torch.nn.Module):
	def __init__(self, input_dim, hidden_dim, output_dim):
    super().__init__()
    ...
    (하략)

질문

super().__init__() 이 뭐야?

기본 개념:

  • 부모 클래스의 상속: 클래스는 상속을 통해 다른 클래스의 속성과 메서드를 물려받을 수 있습니다. 예를 들어, SimpleDNNtorch.nn.Module을 상속받아 신경망 모델로서 필요한 다양한 기능을 물려받습니다.
  • super() 함수: 이 함수는 자식 클래스에서 부모 클래스를 참조할 수 있게 해줍니다. 특히, 부모 클래스의 메서드(생성자 포함)를 호출할 때 유용합니다.

  • __init__() 함수: 클래스가 생성될 때 자동으로 호출되는 생성자 함수입니다. 부모 클래스에도 고유의 __init__() 메서드가 있을 수 있으며, 이를 자식 클래스에서 사용하고 싶을 때 super().__init__()을 호출합니다.

왜 사용하는가?

  1. 부모 클래스의 초기화: 부모 클래스가 특정 변수를 초기화하거나 중요한 설정을 할 수 있습니다. 이를 자식 클래스에서 사용해야 할 때, super().__init__()을 통해 그 작업을 수행합니다.

  2. 코드 중복 방지: 부모 클래스에서 이미 정의된 초기화 작업을 다시 작성할 필요 없이, 자식 클래스에서 super()로 호출하여 활용할 수 있습니다.

예시

class Parent:
    def __init__(self, name):
        self.name = name
        print("Parent class initialized")

class Child(Parent):
    def __init__(self, name, age):
        # 부모 클래스의 __init__을 호출하여 name을 초기화
        super().__init__(name)
        self.age = age
        print("Child class initialized")

child = Child("Alice", 25)

출력 결과:

Parent class initialized
Child class initialized
  • super().__init__()(name)가 없으면 Parent 클래스의 name 변수가 초기화되지 않아 오류가 발생할 수 있습니다.

  • super().__init__()(name)는 Parent 클래스의 생성자를 호출하여 name 변수를 설정하고, 그 후 자식 클래스에서 추가 작업을 수행할 수 있습니다.

즉, super().__init__()(name)는 부모 클래스의 속성이나 메서드를 자식 클래스에서도 사용할 수 있게 해주는 중요한 역할을 합니다.

profile
광고 도메인과 콘텐츠 기획의 전문성을 갖춘 데이터 분석가입니다.

0개의 댓글