사용자 정의 클래스가 있는 힌트 입력
확실한 답을 찾지 못했습니다.함수에 대한 유형 힌트를 수행하고 유형은 정의한 사용자 지정 클래스입니다.CustomClass()
.
그리고 어떤 기능으로 말하자면, 그것을 부르자.FuncA(arg)
나는 한 가지 주장이 있습니다.arg
힌트를 입력하는 올바른 방법FuncA
대상:
def FuncA(arg: CustomClass):
아니면 다음과 같습니다.
from typing import Type
def FuncA(Arg:Type[CustomClass]):
만약 그렇다면, 전자가 맞습니다.arg
의 인스턴스를 허용합니다.
def FuncA(arg: CustomClass):
# ^ instance of CustomClass
클래스 자체(또는 하위 유형)를 원하는 경우 다음과 같이 기록해야 합니다.
from typing import Type # you have to import Type
def FuncA(arg: Type[CustomClass]):
# ^ CustomClass (class object) itself
입력에 대한 설명서에 나와 있는 것처럼:
class typing.Type(Generic[CT_co])
주석이 달린 변수
C
형식 값을 사용할 수 있습니다.C
이와 대조적으로 로 주석이 달린 변수는 클래스 자체인 값을 허용할 수 있습니다. 특히 의 클래스 개체를 허용합니다.
설명서에는 다음과 같은 예가 포함되어 있습니다.int
클래스:
a = 3 # Has type 'int' b = int # Has type 'Type[int]' c = type(a) # Also has type 'Type[int]'
Willm Van Onsem의 답변은 물론 맞지만, 저는 작은 업데이트를 제공하고 싶습니다.PEP 585에서는 표준 컬렉션에 유형 암시 제네릭이 도입되었습니다.예를 들어, 이전에는 예를 들어 이렇게 말해야 했습니다.
from typing import Dict
foo: Dict[str, str] = { "bar": "baz" }
이제 우리는 병렬 유형 계층 구조를 포기할 수 있습니다.typing
모듈을 구성하고 간단히 말합니다.
foo: dict[str, str] = { "bar": "baz" }
이 기능은 python 3.9+에서 사용할 수 있으며 사용하는 경우 3.7+에서도 사용할 수 있습니다.from __future__ import annotations
.
이 구체적인 질문의 관점에서 보면, 그것은 대신에from typing import Type
이제 기본 제공 기능을 사용하여 클래스에 주석을 달 수 있습니다.type
:
def FuncA(arg: type[CustomClass]):
언급URL : https://stackoverflow.com/questions/44664040/type-hints-with-user-defined-classes
'programing' 카테고리의 다른 글
WHERE 조건 없이 SQL Server의 테이블에서 '첫 번째' 레코드 삭제 (0) | 2023.06.22 |
---|---|
SQL Server를 사용하여 일대일 관계 생성 (0) | 2023.06.22 |
ASP.NET 캐시 추가 대 삽입 (0) | 2023.06.22 |
실시간 데이터베이스에 안전하지 않은 규칙이 있다는 Firebase 이메일 (0) | 2023.06.22 |
텍스트 상자에 정수만 허용하는 방법은 무엇입니까? (0) | 2023.06.22 |