setattr没有将self传递给添加到类的方法

时间:2016-06-11 00:21:00

标签: python python-2.7 dynamically-generated setattr

我有一个班级:

>POSIX_shell -c string2

我想动态地为它添加一个方法,但我希望名称基于输入(在我的情况下,基于编码的对象属性,但除了这一点之外)。所以,我使用以下方法添加方法:

class A(object):
    def __init__(self):
        self._first=1
    def a(self):
        pass

这一切都很好,有一点需要注意:

#Set up some variables
a = "_first"
b = "first"
d = {}
instance = A()

#Here we define a set of symbols within an exec statement 
#and put them into the dictionary d
exec "def get_%s(self): return self.%s" % (b, a) in d

#Now, we bind the get method stored in d to our object
setattr(instance, d['get_%s' % (b)].__name__, d['get_%s' % (b)])

为什么我的实例没有将自己传递给它的新功能?

0 个答案:

没有答案