如何测试可能不存在的属性?
如何测试可能不存在的属性?
这个问题已经有答案了:
这是从YAML文件中生成文档的脚本的一部分。它没有进展。
for yaml_filename in yaml_files: with open(yaml_filename, 'r') as yaml_file: try: yaml_contents = yaml.safe_load(yaml_file) for api_name in yaml_contents: api = yaml_contents[api_name] if 'api_doc' in api.keys(): # <---- error generated here format_api(api_name, api, html_file) else: # Handle the generation of HTML documentation for APIs # that have not been updated to include the api_doc # object.
我最初得到的错误是这样的:
AttributeError: 'str' object has no attribute 'keys'
我的最初解释是,如果api缺少keys属性,那么我可以更正if测试来处理它,并仍然到达else分支并正确解析文件。所以我尝试的修复方法看起来像这样:
if hasattr(api,keys) and 'api_doc' in api.keys():
但现在生成的错误消息是:
NameError: name 'keys' is not defined
我认为hasattr()测试将只返回false,但它却报错了。在python对象的理解上,我已经到了极限,我不知道如何搜索我不知道的内容。发生了什么?脚本一直没问题吗?问题在于yaml.safe_load()失败了吗?还是api格式不正确?
admin 更改状态以发布 2023年5月22日