相关文章推荐
文雅的牛肉面  ·  c# ...·  昨天    · 
任性的菠菜  ·  Python - ...·  2 月前    · 

在做《Machine Learning in Action》书中的第三章绘制树形图时遇到了这个问题AttributeError: type object 'str' has no attribute '_name_'

很明显是if type(secondDict[key])._name_  == ‘dict’:这一句有问题,在python3中并没有type(secondDict[key])._name_这样的用法

所以我们要将源代码中的_name_去掉,变成if type(secondDict[key])  == ‘dict’:但这时我们会发现新的问题,编译确实没有报错,但是结果却和我们想要的结果不一样

我们很容易知道叶子节点的数目为3,但我们得出的结果却是2,这是怎么回事呢?我们再回到源码中看

if type(secondDict[key])  == ‘dict’:

这一句中的'dict'加了引号,这就是问题所在了,我们这句判断的语句本来是判断该节点类型是否为dict(字典),但是现在却成了判断该节点类型和‘dict'的类型是否相同,很明显'dict'的类型为string类型,故而,我们本来是想求得一颗树中的叶子节点的数目,现在却变成了求树节点中除叶子节点的其他节点的数目。故而输出2

现在我们知道问题所在,修改就简单了。两种改法:

if type(secondDict[key])  == dict:

或者if type(secondDict[key])  is dict:

再测试下,成功!

安装pydrive报错: AttributeError : ‘str’ object has no attribute ‘name’ 目录一些版本信息 错误 提示 :解决方法: 一些版本信息 python 版本是3.73 没有没有pip版本未更新问题 conda的base环境 错误 提示 : (base) C:\Users\28340>pip install pydrive -i https://pypi.mirrors.ustc.edu.cn/simple/ Looking in indexes: http 原因是因为由于之前已经定义了admin=Admin,所以接下来的代码需要用admin来代替Admin,否则会报错。 而为什么要定义admin=Admin,是因为在前面的时候没有用到静态方法@staticmethod,所以需要重新定义,否则在运行会产生 错误 。 【问题】在折腾:的过程中,参考:去用:from xlutils.copy import copy;newWb = copy(gConst['xls']['fileName']);代码,结果出错:newWb = copy(gConst[‘xls’][‘fileName’]);File "D:\tmp\dev_install_root\ Python 27_x64\lib\site-packages\xl... 关于 AttributeError : type object ‘XXXXXX’ has no attribute 'name’的报错的原因,先运行运行一段代码 class Person( object ): def __init__(self,name): self.name=name def play(self): print('工作') if __name__ == '__main__': p=Person('KB') p.play 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar 在实现决策书代码里有if type (secondDict[key]).name==‘dict’: 这么一个判断条件 报错 AttributeError : type object ‘str’ has no attribute ‘name’ 俩个修改方法 if type (secondDict[key])==dict: if type (secondDict[key]) is dict: # print('rel...',filter_field_obj.re.to. object s.all()) print("rel...", filter_field_obj.remote_field.model.objec... 解决运行 python AttributeError : 'str' object has no attribute 'read' and AttributeError : 'str' object has no attribute 'seek'