【发布时间】:2015-02-13 12:11:46
【问题描述】:
我有一个类,它创建包含函数字典的对象。这些函数在类中定义。
class Foo:
def __init__(self, name, functions):
self.name = name
self.functions = functions
def myFunction1(self):
print self.name
return 'foo'
def myFunction2(self):
return 'bar'
在另一个文件中,我实例化了前一个类的一个对象,我想运行字典中的一个函数。
from foo import Foo
myFunctions = Foo.('a name', {0 : Foo.myFunction1, 1 : Foo.myFunction2})
myFunctions.functions[0]()
我有这个错误: TypeError: 未绑定的方法 myFunction1() 必须以 Foo 实例作为第一个参数调用。
我知道当我执行最后一行时,我只是调用函数而不用 Foo 的对象作为第一个参数来调用它。但我不能写这个:
myFunctions.myFunctions.functions[0]()
如何调用存储在 dict 属性中的此类的函数?
【问题讨论】:
-
这里的
Foo是什么?你的意思是它是一个类还是应该是一个实例?您不需要再次解析类上的方法,您已经有一个未绑定的方法(其中包括对Foo类的引用)。 -
myFunctions.functions[0](myfunctions)?此外,您的作业中不需要foo模块引用,因为您的from othermodule import name形式的导入语句将name添加到当前模块的命名空间。 -
Foo是我创建Foo对象的类。当我创建一个 Foo 对象时,我在myFunctions属性中存储了该对象应该使用的函数的字典。存储的函数与我的对象在同一个类中定义。我只想使用 dict 调用其中一个函数。
标签: python dictionary