Python,调用对象上传递的函数
[编辑] 谢谢大家的帮助。这确实产生了一个答案,我已经标出了正确的答案 [编辑] 我为这个仓促提出的问题道歉。我试图表达我的问题所在,代码片段是作为我试图做的事情的抽象而编写的。我已经添加了a的一个子对象,我需要能够调用属性aThing上的anotherFunc以及a的本机函数 我有一个类,a,函数func()。我有一个正在不断重新初始化的实例Python,调用对象上传递的函数,python,Python,[编辑] 谢谢大家的帮助。这确实产生了一个答案,我已经标出了正确的答案 [编辑] 我为这个仓促提出的问题道歉。我试图表达我的问题所在,代码片段是作为我试图做的事情的抽象而编写的。我已经添加了a的一个子对象,我需要能够调用属性aThing上的anotherFunc以及a的本机函数 我有一个类,a,函数func()。我有一个正在不断重新初始化的实例 class B(object): def __init__() : self.aThing = A() def foo
class B(object):
def __init__() :
self.aThing = A()
def foo(aFunction, args):
self.aThing = A()
self.aThing.aFunction(args)
def bar() :
self.foo(A.func, anArg)
def bam()
self.foo(A.aThing.anotherFunc)
class A(object) :
def __init__() :
self.aThing = C()
def func() :
doSomething
class C(object):
def anotherFunc()
doAnotherThing
x = B()
x.bar()
x.bam()
如何传递函数func,以便在新初始化的对象self.aThing上调用它?不完全清楚,但您可能需要:
class B(object):
def __init__(self): # note 'self' argument
self.aThing = A()
def foo(self, aFunction, args): # and here
self.aThing = A()
getattr(self.aThing, aFunction)(args)
def bar(self): # and here
self.foo("func", anArg) # note string of function name
这将对新的A
实例调用func
,该实例使用函数名和。但是,请注意以下注意事项:
- 根据定义,
实际上没有任何参数(同样,包括A.func
)李>self
- 不清楚
的B.foo
参数是单个参数还是位置参数的元组(通常使用-args
);及*args
来自哪里anArg
- 如果我理解正确,您可能正在寻找:
class B(object):
def foo(self, aFunction, args):
self.aThing = A("foo")
aFunction(self.aThing, args)
def bar(self) :
self.foo(A.func, ["some", "stuff"])
class A(object):
def __init__(self, name):
self.name = name
def func(self, args) :
print "func called on", self.name, args
x = B()
x.bar()
注意所有这些self
参数!输出:
有趣的一行是:
a函数(self.aThing,args)
。要理解其工作原理,请记住aThing.func(args)
实际上与A.func(aThing,args)
您的意思是说只对新创建的A
调用func
?请记住传递self
参数<代码>def foo(self…)仅在新创建的A上是。感谢tobias!这正是我想要的。
func called on foo ['some', 'stuff']