유형 검사에 의존하는 약간의 Python 코드가 있습니다. 수학의 언어로 문제를 풀어 볼 것입니다. 그래서 명확합니다. 나는 서로의 서브 세트에 해당하고 상속 체인을 형성하는 몇 개의 클래스를 가지고있다.Python 유형 검사 및 상속 문제
class Real(object):
pass
class Integer(Real):
pass
class Natural(Integer):
pass
그리고 유형이 포함 된 튜플이 있습니다. 이들 각각은 일부 기능의 도메인에 해당합니다.
t1 = (Real, Real)
t2 = (Real , Integer)
나는 모든이 튜플 좌표 경우 지정된 도메인의 하위 클래스가 다른 튜플 (Natural , Natural)
을 감안할 때 그런 유형 검사의 어떤 모양을하고 싶습니다. 일부 기능 getcompatibles
에 대한 예를 들어 내가 가지고 싶습니다
getcompatibles((Real, Real)) = [ t1 ]
getcompatibles((Real, Integer)) = [ t1, t2 ]
getcompatibles((Natural, Natural)) = [ t1, t2 ]
getcompatibles((Natural, Real)) = [ t1 ]
내가 가지고 올 수있는 유일한 해결책은 도메인 (T1, T2)마다 통해 실행 __subclasses__
의 각 유형의를 통해 실행하는 것입니다 및 주어진 입력에 대해 isinstance
이 True인지 확인하십시오.
매우 비효율적인데,이 작업을 수행하는 데 더 많은 Pythonic 방식이 있습니까?
변경됨 is_compatible -> getcompatibles –