본문 바로가기

dev_AI_framework

__new__ 메서드의 typeing.casts(cls, super().__new__(cls)) - 객체의 타입을 명시적 지정

__new__ 메서드의 return 값을 typing.cast 로 보내는 것은 반환된 객체의 타입을 명시적으로 지정해주기 위한 것

복잡한 상속 구조에서, 특정 타입의 객체가 명확하게 반환되는 것을 보장하느느 역할

 

__new__ 에서 클래스의 인스턴스를 생성하는데, 이때 typing.cast 를 사용하여 반환 타입을 명시적으로 지정

typing.cast 함수는 두 개의 인자를 필요로 한다. 

  • 캐스팅하고자 하는 타입,
  • 실제로 캐스팅하려는 값

 

오버라이드 실행 순서 확인

class Parent:
    def __new__(cls, *args, **kwargs):
        print("Parent __new__ called")
        instance = super().__new__(cls)
        return instance

class Child(Parent):
    def __new__(cls, *args, **kwargs):
        print("Child __new__ called")
        instance = super().__new__(cls)
        return instance

child = Child()

>>>>>>>>>>>
Child __new__ called
Parent __new__ called
  1. Child 클래스의 인스턴스를 생성하는 시도
  2. Parent.__new__ 호출, cls 는 Child 클래스를 가리킨다!!!

 

AI 프레임워크 내에선 Model(Sequential), Layer, Layer-Dense 등등의 명시적 지정을 해봐야겠음

'dev_AI_framework' 카테고리의 다른 글

기본적인 from_config 의 한계  (1) 2024.08.29
클래스 정보, get_config, from_config  (0) 2024.08.29
현재 상황... 막막하네 08/28 직렬화??!?!!  (0) 2024.08.28
계산 그래프  (1) 2024.08.28
c++ 연동  (1) 2024.08.28