2017-08-22 110 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

不要用'is'比較字符串。 –

+0

你有什麼建議? – kacperduras

回答

2

is測試身份,而不是平等。這意味着Python的只是一個比較對象駐留在內存地址

你應該使用==操作符來測試像一個字符串的平等:

if name == target.name: 
0

is運算符測試兩個變量是否指向相同的對象。改爲使用==

if name == target.name: 
+0

是的,非常感謝,但我已經標記了早先的答案D: – kacperduras