-1

我检查一个对象是否有一个属性或另一个,只能有一个。

如果找到该属性,则将其值分配给一个变量。这可以动态完成(属性编号可以变化),从可能的属性列表中获取吗?

if hasattr(o, 'a') or if hasattr(o, 'b') or if hasattr(o, 'c') or if hasattr(o, 'd'):

result = the one that exist
4

1 回答 1

2

将属性制作成一个列表并遍历它:

for attr in ['a', 'b', 'c', 'd']:
    try:
        result = getattr(o, attr)
    except AttributeError:
        # Try the next one
        continue
    break
else:
    raise ValueError("No attribute found")

显然,列表也可以动态构建。

于 2018-08-15T11:30:13.123 回答