Testing for None throws an error the attribute doesn't exist
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 | ----> 1 if person.network is None: 2 print('person.network does not exist') 3 AttributeError: 'Person' object has no attribute 'network' |
正如你在第1行看到的,我正在检查"网络"是否存在。但是,当它不存在时,它会失败并抛出一个python错误。我有点迷茫这是怎么回事。第一行不应该抓住这个确切的问题吗?
当其中一个没有定义"网络"时,实际代码在失败之前会正确地通过大约10个记录。
具有
1 2 | if hasattr(person,"network"): # do stuff |
如果需要检索值,可以使用
1 | network = getattr(person,"network", None) |
最后一个参数是在人员没有
您可以使用内置的python函数hasattr:
1 | if hasattr(person,"network") : |
你的问题是"请求宽恕比请求许可更容易"的典型例子。
我建议使用getattr()。
1 | getattr(class, 'attribute', foo) |
如果该属性不存在,将返回foo。