----> 1 if person.network is None:
2 print('person.network does not exist')
3
AttributeError: 'Person' object has no attribute 'network'
正如您在第1行所见,我正在检查“网络”是否不存在。但是,当它不存在时,它会失败并抛出python错误。关于这是怎么回事,我有点迷茫。第1行不应该抓住这个确切的问题吗?
当其中一个记录没有定义“网络”时,实际代码会在失败之前正确地通过大约10条记录。
答案 0 :(得分:3)
您可以使用内置的python函数hasattr:
if hasattr(person, "network") :
答案 1 :(得分:3)
值None
的实例属性与根本不存在(您的情况)之间存在差异。要正确检查实例属性是否存在,可以使用hasattr()
方法:
if hasattr(person, "network"):
# do stuff
如果您需要检索该值,可以使用getattr()
安全地执行此操作:
network = getattr(person, "network", None)
最后一个参数是在人没有network
属性的情况下返回的默认值。
答案 2 :(得分:-1)
你的问题是一个典型的例子,要求宽恕比要求许可更容易。'
我建议使用getattr()
getattr(class, 'attribute', foo)
如果该属性不存在,则返回foo。