2013-08-07 42 views
1

我想在Python中創建一個Set類,但與已經在Python中實現的set類不同,我希望我的集合只包含一種類型的元素。例如一組整數,一組字符串和一組其他用戶定義的類。Python - 只有一種類型的集合

Python中是否有任何方式將類型作爲參數傳遞給類?或以任何其他方式來做到這一點?

我在想使用dict來實現集合,但字典可以包含來自不同類型的元素。

+0

集是不只是字典值。你必須在任何操作集上驗證類型;添加,交叉點,聯合等等。說明它應該在初始化器中應該是什麼類型,但只是任務的一小部分。 –

+0

我認爲缺乏靜態類型可以防止這種功能。 – njzk2

+0

你希望實現什麼? Python是動態類型的,這是*強度*。爲什麼試圖刪除呢? 'array()'類型中有一個實用程序,用於存儲用於快速操作的基本類型並減少內存佔用量,但是您也希望支持自定義類型。 –

回答

1

Somethig like that?

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

相關問題