在 Python 中,函数是一等公民。这意味着函数可以将另一个函数作为其参数,并在其内部包装另一个函数定义。这有助于在不实际更改函数的情况下对其进行修改。这样的函数被称为装饰器。
这一特性同样适用于包装一个类。这种技术用于在类实例化后通过将其逻辑包装在装饰器中来进行管理。
示例
def decorator_function(Wrapped):
class Wrapper:
def __init__(self, x):
self.wrap = Wrapped(x)
def print_name(self):
return self.wrap.name
return Wrapper
@decorator_function
class Wrapped:
def __init__(self, x):
self.name = x
obj = Wrapped('TutorialsPoint')
print(obj.print_name())
这里,Wrapped
是要被包装的类的名字。它作为参数传递给一个函数。在这个函数内部,我们有一个 Wrapper
类,通过传递的类的属性来修改其行为,并返回修改后的类。返回的类被实例化并且现在可以调用其方法。
当您执行此代码时,它将产生以下输出:
TutorialsPoint