我试图用Python来重写它:
if not x.v1()
if not x.v2()
if not x.v3()
return 'validated'
return 'invalid'
Run Code Online (Sandbox Code Playgroud)
请特别注意,如果x.v1()没有通过,x.v2()而且x.v3()甚至没有运行.
这是我到目前为止最好的主意:
import operator
for method in ['v1', 'v2', 'v3']:
if operator.methodcaller(method)(x):
return 'invalid'
return 'validated'
Run Code Online (Sandbox Code Playgroud)
但我觉得肯定有更多的Pythonic方式.
澄清:函数的数量很大,甚至可能在运行时更改,因此虽然x.v1() or x.v2() or x.v3()看起来确实更好,但这是不可能的,并且数组确实是必要的.(也就是说,如果有比用所有这些字符串写出更好的方法,请告诉我它!)对于不清楚感到抱歉.
只是颠倒逻辑.
if x.v1() or x.v2() or x.v3():
return 'invalid'
return 'validated'
Run Code Online (Sandbox Code Playgroud)