方法重载Python

use*_*339 0 python operator-overloading

这类似于方法重载。当print Hello(1, 2, 3)执行时它会返回"a and b",而我希望它返回"a and b and c"。我知道我可以说if (a and b and c is None)这样就会有效。但是,如果我有 20 个参数并且我必须处理每种情况,那么这将只是多个if我认为没有必要的语句。我应该有更好的方法来解决这样的问题吗?

 def Hello(a=None, b=None, c=None):
    if(a and b):
        return "a and b"
    if(a and c):
       return "a and c"
    if(a and b and c):
       return "a and b and c"

print Hello(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 5

您需要重新排序if语句:

 def Hello(a=None, b=None, c=None):
    if a and b and c:
       return "a and b and c"
    if a and b:
        return "a and b"
    if a and c:
       return "a and c"
Run Code Online (Sandbox Code Playgroud)

a and b and c评估为 true 时,a and b也评估为 true,因此在您的代码中,这种情况由第一个 处理if

  • @user1741339:然后制定一个更好的API..这种情况在现实软件中发生的频率是多少,真的吗? (2认同)