我想改寫這個Pythonically:特別是否有一種調用單個對象的許多成員的Pythonic方式?
if not x.v1()
if not x.v2()
if not x.v3()
return 'validated'
return 'invalid'
注意,如果x.v1()
沒有通過,x.v2()
和x.v3()
甚至沒有運行。
這是我迄今爲止最好的主意:
import operator
for method in ['v1', 'v2', 'v3']:
if operator.methodcaller(method)(x):
return 'invalid'
return 'validated'
,但我覺得有絕對是一個更Python的方式。
澄清:的函數的數量很大,甚至可能在運行時改變能改變的,所以雖然x.v1() or x.v2() or x.v3()
肯定看起來更好,這是不可能的,陣列確實是必要的。 (也就是說,如果有更好的方法比用所有這些字符串寫出更好的方法,請告訴我這件事!)對不清楚的問題抱歉。
這實際上比「全部」或「任何」版本更容易閱讀。 –
@Karin:好的,謝謝。 –