我想动态分配功能的实现。
让我们先从以下几点:
class Doer(object):
def __init__(self):
self.name = "Bob"
def doSomething(self):
print "%s got it done" % self.name
def doItBetter(self):
print "Done better"
在其他语言中,我们将使doItBetter一个匿名函数,并将其分配给对象。 但在Python匿名函数的支持。 相反,我们会尽力做一个可调用的类的实例,并分配到类:
class Doer(object):
def __init__(self):
self.name = "Bob"
class DoItBetter(object):
def __call__(self):
print "%s got it done better" % self.name
Doer.doSomething = DoItBetter()
doer = Doer()
doer.doSomething()
这给了我这样的:
回溯(最后最近一次调用):13号线,在doer.doSomething()9号线,在调用打印“%s的得到它做的更好”%self.name AttributeError的:“DoItBetter”对象有没有属性“名”
最后,我想分配调用对象实例的属性和调用它:
class Doer(object):
def __init__(self):
self.name = "Bob"
class DoItBetter(object):
def __call__(self):
print "%s got it done better" % self.name
doer = Doer()
doer.doSomething = DoItBetter()
doer.doSomething()
只要这不工作,我不DoItBetter引用自我,但是当我做它给了我一个名称错误的self.name
因为它引用调用的self
,而不是所属的类self
。
于是我找了一个匿名函数赋值给一个类的函数或实例方法,该方法调用可以引用该对象的一个Python的方式self
。