簡體   English   中英

Python-無法定義一組用戶定義的對象

[英]Python - can't define set of user-defined objects

我收到以下錯誤

    all_rots = set([rot1, rot2])
TypeError: an integer is required

我的代碼很簡單

rot1 = SimpleClass(mapping={1:1, 2:2})
rot2 = SimpleClass(mapping={2:2, 1:1})
all_rots = set([rot1, rot2])

(這是在單元測試中)

而且SimpleClass類是

class SimpleClass(object):
    def __init__(self, mapping):
        self._mapping = mapping


    @property
    def mapping(self):
        return self._mapping


    def __getitem__(self, key):
        return self.mapping[key]

    def __hash__(self):
        return sorted(list(self.mapping.iteritems()))

    def __eq__(self, other):
        if type(other) is type(self):
            return self.__dict__ == other.__dict__
        return False

任何人都知道為什么我不能構造一組對象?

__hash__應該返回一個整數而不是一個列表。

您可以從排序列表(例如元組)中創建一個不可變/可哈希的類型,並返回其哈希值:

def __hash__(self):
    return hash(tuple(sorted(self.mapping.items())))

rot1 = SimpleClass(mapping={1:1, 2:2})
rot2 = SimpleClass(mapping={2:2, 1:1})
all_rots = set([rot1, rot2])
print all_rots
# set([<Rotation object at 0x7f737e5ef210>])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM