我正在研究如何记录。我想在宣布新员工时制作日志记录系统日志。 这是我的代码。
@employee_log
class Employee:
def __init__(self, name: str, pay: int):
self.name = name
self.pay = pay
self.__pay_raise_rate = 1.03
在某个时候,我想知道如果将@employee_log放在__init__的头上怎么办。 看起来像
class Employee:
@employee_log
def __init__(self, name: str, pay: int):
self.name = name
self.pay = pay
self.__pay_raise_rate = 1.03
但是它不起作用。错误说
TypeError: __init__() missing 1 required positional argument: 'pay'
它们之间有什么问题和区别?
我的雇员日志是
class employee_log:
def __init__(self, orig_func):
self.orig_func = orig_func
logging.basicConfig(filename='{}.log'.format(orig_func.__name__), level=logging.INFO,
format='%(asctime)s:%(levelname)s:%(message)s')
def __call__(self, *args, **kwargs):
logging.info('Ran with args {}, kwargs {}'.format(*args, **kwargs))
return self.orig_func(*args, **kwargs)