2017-05-02 77 views
-2

我想写一段代码,可以搜索图中的字符串,如果它发现它,它会打印一个字符串,指示它被发现。我认为我使用包含的方式搜索它的方式是正确的,但我无法理解如何打印显示该信息的字符串。下面是有问题的部分,特别是def__contains __()。搜索一个字符串和使用def__contains打印结果__()

def __contains__(self, item): 
     if "EVGA" in self.graph: 
      print "Contains EVGA" 
     else: 
      print "Doesn't Contain EVGA" 
+0

这取决于'self.graph'是什么。另外,你可能想使用'item',而不是''EVGA''的硬编码值。 – chepner

回答

0

我希望我明白你的问题,但我猜你要修改使用__contains__搜索的字符串(图形卡的名称),并 如果发现打印一份声明中,它包含了特定的图形卡。 如果是这样,你可以修改__contains__功能在COMPUTER类为如下所示:

def __contains__(self, item): 
    if item in self.graph: 
     print ("Contains {0}".format(item)) # this is optional 
     return True 
    else: 
     print ("Does not Contain {}".format(item)) # this is optional 
     return False 

当您运行

print("EVGA" in computer1) 
print ("EVGA" in computer2) 
print ("Gigabyte" in computer2) 

您将获得:

Contains EVGA 
True 
Does not Contain EVGA 
False 
Contains Gigabyte 
True 

编辑:评论提到user2357112

+0

谢谢,这是我所希望的解释。 – alienmode

+0

'__contains__'是用来实现'in'运算符的方法;你不应该从它返回一个字符串。这样做会破坏'in'运算符的使用。 – user2357112

+0

@ user2357112,谢谢。我知道这将会出现;)我只是想给OP做一个解释,说明如何打印一份声明。我明白你的意思,我会根据你的建议修改它。 – plasmon360