Gwa*_*r17 1 python dictionary getattr python-2.7
我正在做一个练习,你应该计算你的项目是多么优雅的分数.高帽给你2分,领结给你4分,单片眼镜给你5分.我已经在每个类实例上启动了一个包含这些项的字典,但是当我getattr用来检查项是否具有该属性时,它总是返回None.
class Classy(object):
def __init__(self):
self.items = []
self.classyItems = {'tophat': 2, 'bowtie': 4, 'monocle': 5}
def addItem(self, str):
self.items.append(str)
def getClassiness(self):
classiness = 0
for item in self.items:
itemIsClassy = getattr(self.classyItems, item, None) # Why does this always return none?
if itemIsClassy:
classiness += itemIsClassy
else:
pass
return classiness
# Test cases
me = Classy()
# Should be 0
print me.getClassiness()
me.addItem("tophat")
# Should be 2
print me.getClassiness() # I'm getting 0
Run Code Online (Sandbox Code Playgroud)
为什么getattr回国None时,self.classyItems显然有顶帽的属性?
感谢大家的帮助!阅读答案之后,我仍然感到困惑,只是读取字典键不属于这里帮助我.Python是dict一个对象吗?