相同 class 的不同装饰器

Different decorators for the same class

我有一个接受参数的装饰器,我想将它应用于 class,每次单独传递不同的参数,以创建相同 class 的不同版本。例如:

@decorator(arg1)
class SomeClass:
   pass

@decorator(arg2)
class SomeOtherClassWithSameContent:
    pass  # repetition of code here

如何避免创建两个具有相同功能的 class 并避免代码重复?谢谢!

装饰器不必按字面意义使用 @:

class Foo:
    pass


SomeClass = decorator(arg1)(Foo)
SomeOtherClassWithSameContent = decorator(arg2)(Foo)

无论如何,@ 语法基本上只是 shorthand。