我已经编写了一个日志装饰器,用于记录执行特定函数所需的时间,以及其他一些信息。我想根据输入参数给这个特定的信息添加一些东西。所以我写了一小段代码:
for var in args:
if repr(type(var)) == '<class \'django.contrib.auth.models.User\'>':
user_id = var.id
elif repr(type(var)) == '<class \'someclass.models.Widget\'>':
event_name = method.__name__ + ':' + var.key这看起来很笨拙,但另一种选择是在文件中继承django.contrib.auth.models.user和someclass.models.Widget。我的问题是,我这样做的方式是否正确,继承方法是否正确,或者我是否遗漏了什么。
发布于 2020-04-22 21:36:02
这是一种愚蠢的做法。聪明的方法是:
for var in args:
if type(var) == models.User:
user_id = var.id
elif type(var) == models.Widget:
event_name = method.__name__ + ':' + var.key并为模型继承适当的源代码。
如果您希望您的装饰器更高效,并最终继承大量的类,那么拥有一个主要的抽象类和几个子类将是有意义的。
https://stackoverflow.com/questions/61366089
复制相似问题