2013-08-07 2 views
1

파이썬에서 Set 클래스를 만들고 싶습니다.하지만 파이썬에서 이미 구현 된 세트 클래스와는 달리, 세트에는 오직 하나의 타입의 요소 만 들어 있어야합니다. 예를 들어, 정수 세트, 문자열 세트 및 기타 사용자 정의 클래스 세트.파이썬 - 하나의 타입 만의 세트

형식을 매개 변수로 클래스에 전달할 수있는 방법이 있습니까? 또는 다른 방법으로 할 수 있습니까?

dict를 사용하여 집합을 구현할 생각 이었지만 dicts에는 다른 유형의 요소가 포함될 수 있습니다.

+0

설정이없이 단지 사전있는 새로운 세트의 생성을위한 전화를 오버라이드 (override) 값. 집합의 조작에 따라 유형을 확인해야합니다. 추가, 교차점, 합집합 등 이니셜 라이저에 있어야하는 유형은 작업의 일부에 불과합니다. –

+0

나는 정적 타이핑의 부족은 그러한 기능을 방지한다고 생각한다. – njzk2

+0

그리고 달성하고자하는 것은 무엇입니까? 파이썬은 동적으로 타입이 지정됩니다. 왜 그것을 제거하려는 시도인가? 'array()'타입에는 빠른 연산과 메모리 사용량을 줄이기위한 원시 타입을 저장하는 유틸리티가 있지만 커스텀 타입도 지원하고 싶습니다. –

답변

1

그런가요?

from sets import Set 

class MySet(Set): 

    def __init__(self, iter, klass=None): 
     if klass is not None: 
      for item in iter: 
       if not isinstance(item, klass): 
        raise Exception("Error") 
     super(MySet, self).__init__(iter) 


if __name__ == '__main__': 

    set1 = MySet([1,2,3], int) 
    set2 = MySet([2,3,4], int) 

    print set2.intersection(set1) 

당신도 intersection 같은 방법의 유형의 제어를 원하는 경우에, 당신은 (self.__class__(common))

안녕

+0

완벽. 감사! – user2483939

+0

나는 투표 할 수 있으면 좋겠지 만 평판이 충분하지 않습니다. – user2483939