赞
踩
我正在尝试减少代码中的复制/粘贴,并且偶然发现了这个问题.我已经google了答案,但所有答案都使用类的实例作为键,我找不到任何关于使用类定义本身作为键(我不知道是否可能).
我的代码是这样的:
# All chunkFuncs keys are class definitions, all values are functions
chunkFuncs = {Math_EXP : Math_EXPChunk, Assignment : AssignmentChunk, Function : FunctionChunk}
def Chunker(chunk, localScope):
for chunkType in chunkFuncs:
if isinstance(chunk,chunkType):
# The next line is where the error is raised
localScope = chunkFuncs[chunk](chunk,localScope)
return localScope
而错误就是这个
TypeError: unhashable type: 'Assignment'
以下是类定义:
class Math_EXP(pyPeg.List):
grammar = [Number,Symbol],pyPeg.maybe_some(Math_OP,[Number,Symbol])
class Assignment(pyPeg.List):
grammar = Symbol,'=',[Math_EXP,Number]
class Function(pyPeg.List):
grammar = Symbol,'(',pyPeg.optional(pyPeg.csl([Symbol,Number])),')'
有没有其他方法可以用来获得相同的效果?
谢谢.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。