是否将Python字符串repr用于对象类型签入装饰器?
我编写了一个日志修饰符,它记录特定函数执行所需的时间以及一些其他信息。我想添加一些基于输入参数的特定信息。所以我写了这段代码:是否将Python字符串repr用于对象类型签入装饰器?,python,python-3.x,python-decorators,Python,Python 3.x,Python Decorators,我编写了一个日志修饰符,它记录特定函数执行所需的时间以及一些其他信息。我想添加一些基于输入参数的特定信息。所以我写了这段代码: 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\
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
参数中的变量的:
如果repr(类型(变量))='':
用户id=变量id
elif报告(类型(变量))='':
事件名称=方法。名称:'+var.key
它看起来很笨重,但另一个选项是将django.contrib.auth.models.user和someclass.models.Widget继承到文件中。我的问题是,我这样做的方式是否正确,继承方法是否正确,或者我是否遗漏了什么。这是一种愚蠢的方法。明智的做法是:
for var in args:
if type(var) == models.User:
user_id = var.id
elif type(var) == models.Widget:
event_name = method.__name__ + ':' + var.key
并为模型继承适当的源
如果您希望装饰器更高效,并最终继承大量的类,那么最好使用一个主抽象类和几个子类。这是一种愚蠢的方法。明智的做法是:
for var in args:
if type(var) == models.User:
user_id = var.id
elif type(var) == models.Widget:
event_name = method.__name__ + ':' + var.key
并为模型继承适当的源
如果您希望装饰器更高效,并最终继承大量的类,那么最好使用一个主抽象类和几个子类。为什么要使用
repr
?为什么不使用或?理想情况下,您应该使用并导入它们。在这种情况下,我很好奇效率和代码连接之间的平衡。如果decorator应用于各种各样的代码块,并且需要从这些代码块继承它所分支的类。。。。没有关系。我想如果我在足够多的地方使用它,我会将其子类化,并将代码块分开。谢谢你们。为什么要通过repr
?为什么不使用或?理想情况下,您应该使用并导入它们。在这种情况下,我很好奇效率和代码连接之间的平衡。如果decorator应用于各种各样的代码块,并且需要从这些代码块继承它所分支的类。。。。没有关系。我想如果我在足够多的地方使用它,我会将其子类化,并将代码块分开。谢谢你们两位。