假设我想为类中定义的方法创建装饰器。我希望装饰器在被调用时能够在定义方法的类上设置属性(以便将其注册到用于特定目的的方法列表中)。
在Python 2中,该im_class方法很好地完成了这个:
def decorator(method):
cls = method.im_class
cls.foo = 'bar'
return method
但是,在Python 3中,似乎不存在这样的属性(或替代它)。我想这个想法是你可以调用type(method.__self__)来获取类,但是这对于未绑定的方法不起作用,因为__self__ == None在那种情况下。
注意:这个问题实际上与我的情况有点无关,因为我选择在方法本身上设置属性,然后让实例扫描其所有方法,在适当的时间查找该属性。我(目前)也在使用Python 2.6。但是,我很好奇是否有替换版本2的功能,如果没有,那么完全删除它的理由是什么。
一只名叫tom的猫
冉冉说
相关分类