[Pytorch]super(class, self).__init__()

ma-kjh·2024년 12월 23일
0

Pytorch

목록 보기
21/25

코드 보다보면, class를 정의할 때, super(class_name, self).__init__()을 를 사용하는 경우가 있는데 이게 왜 필요할까 .. ?

  • 부모 클래스에 이미 구현된 초기화 로직을 재사용할 수 있다.
  • 이를 통해 코드의 중복을 줄이고 유지보수를 용이하게 함.
  • 부모 클래스가 복잡한 초기화 과정을 갖고 있다면 이를 자식 클래스에서 다시 구현할 필요가 없게됨.
class Parent:
    def __init__(self, value):
        self.value = value
        print(f"Parent initialized with value {value}")

class Child(Parent):
    def __init__(self, value, extra):
        super().__init__(value)  # Parent의 초기화 로직 재사용
        self.extra = extra
        print(f"Child initialized with extra {extra}")

c = Child(10, "extra_value")
# 출력:
# Parent initialized with value 10
# Child initialized with extra extra_value
class TextForgetDatasetQA(Dataset):
    def __init__(self, data_path, tokenizer, model_family, max_length=512, split='forget10', loss_type="idk"):
        super(TextForgetDatasetQA, self).__init__()
  • TextForgetDatasetQA 클래스에서 Dataset 클래스를 상속받고 있기 때문에, Dataset 클래스의 초기화 로직을 실행하기 위해 super()를 사용하여 부모 클래스의 __init__()을 호출.
  • Dataset 클래스 초기화: PyTorch의 Dataset 클래스가 이미 정의한 초기화 로직을 실행하여 필요한 속성이나 메서드가 정상적으로 동작하도록 보장.
  • 확장 가능성: 만약 Dataset 클래스가 업데이트되어 초기화 과정이 변경되더라도, super()를 사용하면 이를 자동으로 상속받을 수 있음.
profile
거인의 어깨에 올라서서 더 넓은 세상을 바라보라 - 아이작 뉴턴

0개의 댓글