Replies: 3 comments
-
관련 커뮤니티 논의가 있었던 스레드: python/typing#105 |
Beta Was this translation helpful? Give feedback.
-
SO나 커뮤니티에서 제시되는 우회 방법 중 하나는, if TYPE_CHECKING:
import ... 이렇게 적어줌으로써, 순환참조를 막고, 런타임에 필요하지 않은 import를 한 곳으로 모을 수 있습니다. |
Beta Was this translation helpful? Give feedback.
-
개인적인 생각은 import 의 길이 보다는 힌팅을 의도에 맞게 사용하는 부분이 더 중요하다고 생각합니다. 대체로 code writing 을 하는 경우보다 code reading 을 하는 경우가 많고, |
Beta Was this translation helpful? Give feedback.
-
순환참조나 불필요한 import를 억제하면서 타입힌트를 활용할 수 있는 방법에 대해 논의해보고 싶습니다.
현재 파이썬 스펙 상 타입 어노테이션을 위해서는 식별자를 사용하든, lazy eval을 위해 문자열을 사용하든 어쩔 수 없이 반드시 대상에 대한 임포트가 필요합니다.
예를 들어 만약 저희
eight/apps/credit_scroes/utils.py
의credit_rating_factory
함수 같은 경우에 첫번째 인자로apps.applications.models.base
모듈의DealApplication
클래스 타입을 받는다고 적고 싶다면 해당 모듈 임포트를 해야합니다. 그러나utils
모듈에서는 원래applications.models.base
모듈의 임포트를 필요로 하지 않았었습니다. 단지 타입힌트 추가를 위해 새로운 import를 추가하는 것은 다소 부담스러운 것 같습니다. 이러한 경우마다 임포트를 추가한다면그렇지만 타입 어노테이션을 통해서 얻는 이득도 크다고 할 수 있습니다. 코드 가독성이 향상되고 정의나 사용처를 추적하기가 쉬워지며, 자동완성이나 정적분석의 퀄리티를 크게 향상시켜 줍니다.
아직은 마땅한 방법을 찾지 못해서 이런 부분까지 타입 어노테이션을 하는 것은 개인적으로 보류하는 게 좋겠다는 의견입니다. 다만 여기 스레드를 통해 다양한 솔루션들이나 논의를 공유하면서 추후에 만족할만한 방법을 찾을 수 있길 바라서 이 discussion을 생성합니다.
Beta Was this translation helpful? Give feedback.
All reactions