<p>允许使用技术<a href="https://stackoverflow.com/questions/10547343/add-object-into-pythons-set-collection-and-determine-by-objects-attribute">from here</a>将对象添加到集合中</p>
<p>要在集合中放置对象,对象类需要实现:</p>
<ol>
<li><strong>eq</strong>(…)</li>
<li><strong>散列(…)</li>
</ol>
<p><strong>代码</strong></p>
<pre><code>class Object :
def __init__(self,id,x,y):
self.id = id
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def __hash__(self):
return hash((self.x, self.y)) # hash of x, y tuple
def __str__(self):
return str(vars(self)) # vars converts attributes to dictionary
# str converts dictionary to string
</code></pre>
<p><strong>用法</strong></p>
<pre><code>ob1 = Object(0, 2.7, 7.3)
ob2 = Object(1, 2.7, 7.3)
ob3 = Object(2, 3.2, 4.6)
ob4 = Object(3, 2.7, 7.3)
set_ = {ob1, ob2, ob3, ob4} # Place objects in set
# Show unique elements i.e. set
for obj in set_:
print(obj)
</code></pre>
<p><strong>输出</strong></p>
<pre><code>{'id': 2, 'x': 3.2, 'y': 4.6} # ob2
{'id': 0, 'x': 2.7, 'y': 7.3} # ob0
</code></pre>