__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
- Child 클래스의 인스턴스를 생성하는 시도
- 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 |