0
我希望有人對我遇到的這個問題有一個快速修復。 我希望能夠在迭代中計數用戶定義對象的出現次數。問題是,當我創建一個對象來比較對象時,它會在內存空間中創建另一個對象,以便該對象在應該出現時不會被計數。列表中的用戶定義對象的Python指針和內存空間
例子:
class Barn:
def __init__(self, i,j):
self.i = i
self.j = j
barns = [Barn(1,2), Barn(3,4)]
a = Barn(1,2)
print 'number of Barn(1,2) is', barns.count(Barn(1,2))
print 'memory location of Barn(1,2) in list', barns[0]
print 'memory location of Barn(1,2) stored in "a"', a
回報:
number of Barn(1,2) is 0
memory location of Barn(1,2) in list <__main__.Barn instance at 0x01FCDFA8>
memory location of Barn(1,2) stored in "a" <__main__.Barn instance at 0x01FD0030>
有沒有一種方法,使該實例列表工作count
方法,而無需你把命名列表中的每個項目它在哪裏召喚這些指稱對象?
謝謝@BrenBarn,這非常有幫助。順便說一下適當的姓。 – chase
使它可哈希:'def __hash __(self):return hash((self.i,self.j))'它假定列表只包含'__eq__',列表只包含Barn對象。 – jfs
如果一個Barn對象在其中包含可變數量的貓作爲屬性(整個程序中連續更改的貓的數量),該怎麼辦?這是否使穀倉變得可變,或者,因爲它仍然是同一個穀倉,是否可以被散列呢? – chase