특정 클래스의 서브 클래스를 허용하기 위해 파이썬 3을 사용하여 타입 힌팅을 허용하고 싶습니다. 예컨대 : 이제타입 힌팅의 서브 클래스
class A:
pass
class B(A):
pass
class C(A):
pass
def process_any_subclass_type_of_A(cls: A):
if cls == B:
# do something
elif cls == C:
# do something else
다음 코드를 입력 : 내가 PyCharm IDE 힌트를 얻을
process_any_subclass_type_of_A(B)
'A 형 예상을 대신 형 [B]를 얻었다.'
여기에 입력 힌트를 변경하여 A의 하위 유형을 허용하려면 어떻게해야합니까?
이에 따르면 (https://www.python.org/dev/peps/pep-0484/#type-definition-syntax, "형식이 특정 인수 유형의 하위 유형이기도 한 표현식도 해당 인수로 허용됩니다."), 내 솔루션 (cls: A)
이 작동해야한다고 생각합니까?
또한이 오류가 발생합니까? 그렇지 않으면 아마도 PyCharm의 버그 일 것입니다! – jpic
나를 위해 나는 파이썬 콘솔에 시도하고 그것은 잘 작동하고 있습니다. PyCharm에서 가능한 버그 일 수 있습니다. – Nirmi
예, 작동하고 있습니다. 유형 힌트는 내가 아는 한 선택 사항입니다. 여전히 메소드의 사용자가 클래스가 사용을 위해 의도 된 클래스를 명시 적으로 알고 싶습니다. – user1211030