首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表中用户定义对象的python指针和内存空间

列表中用户定义对象的python指针和内存空间
EN

Stack Overflow用户
提问于 2013-06-05 03:26:55
回答 1查看 84关注 0票数 0

我希望有人能快速解决我遇到的这个问题。我希望能够计算用户定义的对象在迭代器中出现的次数。问题是,当我创建一个对象与之进行比较时,它会在内存空间中创建另一个对象,这样该对象就不会在应该计数的时候被计算在内。

示例:

代码语言:javascript
复制
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

返回:

代码语言:javascript
复制
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>

有没有一种方法可以让list的count方法在这个实例上工作,而不必在放入list时命名列表中的每一项,并调用每个引用对象,等等?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-05 03:28:12

您需要为您的类定义一个__eq__方法,该方法定义您希望相等的含义。

代码语言:javascript
复制
class Barn(object):
    def __init__(self, i,j):
        self.i = i
        self.j = j
    def __eq__(self, other):
        return self.i == other.i and self.j == other.j

有关详细信息,请参阅the documentation。注意,如果你想要你的对象是hashable的(例如,可以作为字典的键),你需要做更多的事情。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16925899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档