【发布时间】:2012-11-28 22:11:58
【问题描述】:
我已经构建了自己的类User,它具有userID 的属性。我覆盖了__repr__,使其成为userID 字符串。
在另一个类中,我有一个数组 self.users = [] 和几个 User 实例。出于测试目的,我给了他们用户 ID 1 和 2。我使用:
'[%s]' % ','.join(map(str, self.users))
要打印数组的内容,产生:
[1,2]
我正在尝试按照以下方式进行 if 语句:
if "1" in self.users:
print "True"
以上是我想要实现的目标的简单表示。我尝试了很多方法,但我无法让程序打印出来。有谁知道怎么做?
【问题讨论】:
-
self.users 中的值是 int 吗?因为您正在检查字符串
'1'。 -
他将 str 构造函数映射到列表上。这不是问题。
-
出于好奇,您为什么要将
str映射到列表上?通常人们这样做是为了避免list.__str__在每个元素上调用__repr__的事实——但在您的情况下,您已经定义了__repr__,并且您正在专门寻找__repr__值…… -
我们只是在猜测
self.users中的元素是什么。我们知道他们已经很好地定义了__str__/__repr__,但仅此而已。为了提供更好的解决方案,您应该在 if 语句之前插入print self.users并将结果作为对您问题的编辑发布 -
是否有理由需要通过字符串表示而不是实际的成员变量进行搜索?为什么不只是
any(user.userID == '1' for user in self.users)?
标签: python if-statement boolean