1.1 为函数增加方法
def add_test_method(module):
def decorator(func):
def wrapper(*args, **kwargs):
# 在这里写你的 test 方法的逻辑
print("This is a test method for", args[0])
return func(*args, **kwargs)
return wrapper
return decorator
# 使用装饰器来给 os.path 模块添加 test 方法
@add_test_method("os.path")
def test(path):
import os.path
# 使用 os.path 模块的其他方法
return os.path.basename(path)
# 直接调用 test 函数
print(test("c:\\test.csv"))
1.2 可以使用装饰器来添加实例方法或类方法
def add_test_method(module):
def decorator(func):
def wrapper(self, *args, **kwargs):
# 在这里写你的 test 方法的逻辑
print("This is a test method for", args[0])
return func(self, *args, **kwargs)
return wrapper
return decorator
class MyClass:
pass
# 使用装饰器来给 os.path 模块添加 test 方法
@add_test_method("os.path")
def test(self, path):
import os.path
# 使用 os.path 模块的其他方法
return os.path.basename(path)
# 创建实例对象
obj = MyClass()
# 调用实例方法
print(test(obj, "c:\\test.csv"))
在这个示例中,我们将装饰器应用于 test 方法,并将 self 参数添加到 wrapper 函数的签名中。然后,我们创建了一个实例对象 obj,并通过 test(obj, “c:\test.csv”) 来调用被装饰的实例方法。
如果你想要添加类方法,也可以使用类装饰器的方式进行修改。在装饰器内部,在调用被装饰的函数时,将类对象作为第一个参数传递。以下是一个示例:
def add_test_method(module):
def decorator(cls):
def wrapper(cls, *args, **kwargs):
# 在这里写你的 test 方法的逻辑
print("This is a test method for", args[0])
return cls(*args, **kwargs)
return wrapper
return decorator
使用装饰器来给 os.path 模块添加 test 方法
@add_test_method("os.path")
class MyClass:
pass
创建类对象
obj = MyClass()
调用类方法
print(obj(“c:\test.csv”)) 在这个示例中,我们将装饰器应用于 MyClass 类,并将类对象作为第一个参数传递给 wrapper 函数。然后,我们创建了一个类对象 obj,并通过 obj(“c:\test.csv”) 来调用被装饰的类方法。
通过这种方式,你可以根据需要使用装饰器来添加不同类型的方法。