Python 包装类 Wrapper Classes 怎么用?

文章导读
Previous Quiz Next 在 Python 中,function 是一等对象。function 可以将另一个 function 作为其参数,并在其内部包装另一个 function 定义。这有助于在不实际更改 function 的情况下修改它。此类 functio
A A

Python - 包装类



Previous
Quiz
Next

在 Python 中,function 是一等对象。function 可以将另一个 function 作为其参数,并在其内部包装另一个 function 定义。这有助于在不实际更改 function 的情况下修改它。此类 function 被称为 decorators。

此特性也适用于包装 class。这种技术用于在 class 被实例化后,通过在 decorator 中包装其逻辑来管理 class。

示例

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('')
print(obj.print_name())

在这里,Wrapped 是要包装的 class 的名称。它作为参数传递给一个 function。在 function 内部,我们有一个 Wrapper class,使用传递的 class 的属性修改其行为,并返回修改后的 class。返回的 class 被实例化,现在可以调用其 method。

执行此代码时,将产生以下输出