2017-05-02 73 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