我发现自己经常做以下事情:

attr = getattr(obj, 'attr', None)
if attr is not None:
    attr()
    # Do something, either attr(), or func(attr), or whatever
else:
    # Do something else

还有更Python化的写法吗?这是否更好? (至少不是在性能上,IMO。)
try:
    obj.attr() # or whatever
except AttributeError:
    # Do something else

最佳答案

由于您正在调用attr,因此可以执行以下操作:

def default_action():
    # do something else

action = getattr(obj, 'attr', default_action)

action()

关于python - 简洁的getattr()方法,如果在Python中没有,则使用它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2428557/

10-13 07:43