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
。
答案 0 :(得分:2)
is
测试身份,而不是平等。这意味着Python只是简单地比较一个对象所在的内存地址。
你应该使用==运算符来测试字符串的相等性,如:
if name == target.name:
答案 1 :(得分:0)
is
运算符测试两个变量是否指向同一个对象。请改用==
。
if name == target.name: