class class_name:
def foo1(self):
print "foo1"
def foo2(self):
print "foo2"
def foo(self, key):
self.dictionary[key]()
dictionary = {
'key1' : class_name.foo1,
'key2' : class_name.foo2
}
>>>class_name().foo('key1')
错误:AttributeError: class_name instance has no attribute 'dictionary'
虽然我理解错误,但我不知道如何纠正它。
即使我在类中定义字典“通过将其缩进到类定义中,它也会生成错误 NameError: name 'class_name' is not defined” *
任何有关如何解决此问题的建议表示赞赏。
编辑:我需要一个类的字典,而不是每个对象实例一个字典
对真正问题的一点见解:我正在做一个国际象棋游戏。所以在定义游戏逻辑的同时,每个棋子都有自己的移动风格。我想调用一个函数来根据棋盘的当前状态给我合法的移动。这个单个函数(在示例中为 foo())必须根据棋子的类型调用其他函数,并为这些函数提供对象实例(和其他参数),以便它们可以计算移动。我面临的问题是将对象实例传递给特定于片段的函数(foo1() 和 foo2())。
也许这会有所帮助。这就是我想在函数中实现的foo()
:
switch(key){
case 'key1':
self.foo1();
break;
case 'key2':
self.foo2();
break;
}
* 从评论中添加