python – 如何装饰一个类?

Python 2.5中,有没有办法创建一个装饰类的装饰器?具体来说,我想使用装饰器将一个成员添加到类中,并更改构造函数以获取该成员的值.

寻找类似下面的内容(在’class Foo:’上有语法错误:

def getId(self): return self.__id

class addID(original_class):
    def __init__(self, id, *args, **kws):
        self.__id = id
        self.getId = getId
        original_class.__init__(self, *args, **kws)

@addID
class Foo:
    def __init__(self, value1):
        self.value1 = value1

if __name__ == '__main__':
    foo1 = Foo(5,1)
    print foo1.value1, foo1.getId()
    foo2 = Foo(15,2)
    print foo2.value1, foo2.getId()

我想我真正想要的是在Python中做一些类似C#接口的方法.我想我需要切换我的范例.

解决方法:

我认为你可能希望考虑一个子类而不是你概述的方法.但是,不知道您的具体情况,YMMV

上一篇:在Python中获取方法参数名称


下一篇:如何在不为每个方法反复输入的情况下装饰类的所有函数?