【发布时间】:2021-05-20 02:23:58
【问题描述】:
我正在尝试找出包装器/装饰器。
为此,我想创建一个简单的包装器,用于创建函数中使用的目录(如果它不存在):
import os
def _create_folder(func):
def wrapper(directory):
if not os.path.exists(os.path.dirname(directory)):
os.makedirs(os.path.dirname(directory))
func(directory)
return wrapper
@_create_folder
def print_dir(directory):
print(directory)
path = "C:/Temp"
print_dir(path)
我没有错误,但没有创建文件夹。我错过了什么?
此外,最后,将被包装的函数在一个类中:
import os
def _create_folder(func):
def wrapper(directory):
if not os.path.exists(os.path.dirname(directory)):
os.makedirs(os.path.dirname(directory))
func(directory)
return wrapper
class Test():
@_create_folder
def print_dir(self, directory):
print(directory)
path = "C:/Temp"
test = Test().print_dir(path)
在这种情况下,我有以下错误:
TypeError: wrapper() takes 1 positional argument but 2 were given
如何让它在类中工作?
【问题讨论】:
标签: python-3.x decorator wrapper