2017-05-02 13 views
-2

グラフで文字列を検索できるコードを作成しようとしていますが、見つかった場合は見つかったことを示す文字列が出力されます。私はcontainsを使ってそれを探している方法が正しいと思う、私はちょうど私がその情報を示す文字列をどのように出力することができるか理解していない。以下は問題のセクション、特に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'が何であるかによって異なります。また、おそらく、 '' EVGA "'のハードコードされた値ではなく、 'item'を使用したいでしょう。 – chepner

答えて

0

私はあなたの質問を理解してほしい、私はあなたがそれがその特定のグラフィックカードが含まれていることを声明を印刷した場合の文字列(グラフィックスカード名)と を検索するために使用__contains__を変更したい推測しています。 その場合は、以下に示すなど、あなたがCOMPUTERクラスで__contains__機能を変更することができます:

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 

EDIT:のコメント後user2357112

+0

これは私が望んでいた説明でした。 – alienmode

+0

'__contains__'は' in'演算子を実装するためのメソッドです。あなたはそれから文字列を返すべきではありません。これを行うと、 'in'演算子の使用が中断されます。 – user2357112

+0

@ user2357112、ありがとうございます。私はこれが出てくるのを知っていた;)私は単にOPに説明文を印刷する方法を説明するために結びつけていた。私はあなたの提案に応じて修正すると言っていることを理解しています。 – plasmon360

関連する問題