2017-08-22 4 views
1
class CommandManager: 
     def __init__(self): 
      self.commands = [] 

     def add_command(self, command: Command): 
      if command is None: 
       return None 

      for target in self.commands: 
       if target.name is command.name: 
        return None 

      print(command.name, command.description, command.usage, command.min_arguments) # debug 

      self.commands.append(command) 
      return command 

     def get_command(self, name): 
      if name is None: 
       return None  
      for target in self.commands: 
       if name is target.name: 
        return target  
      return None 

このコードには何が問題なのですか?配列に追加してadd_commandメソッドでそれを探しても問題ありませんが、get_commandには見つかりません。値はNoneではありません。一覧で検索する

+2

を。 –

+0

あなたは何をお勧めしますか? – kacperduras

答えて

2

is同一性ではなく、同一性のテスト。これは、Pythonは単にオブジェクトが常駐メモリアドレスを比較する

あなたは==のような文字列の等価性をテストするための演算子を使用する必要があります。 `is`で文字列を比較しないでください

if name == target.name: 
0

is演算子は、2つの変数が同じオブジェクトを指しているかどうかをテストします。代わりに==を使用してください。

if name == target.name: 
+0

はい、ありがとうございます、私は以前の答えをマークしていますD: – kacperduras

関連する問題