我想创建一个装饰器,它基本上包装了一个已经存在的具有参数的装饰器,这样新的装饰器就像旧的装饰器一样,并提供了一些参数。
具体来说,这是关于内置
@dataclass
装饰器。我有很多类可以用它来装饰,同时总是使用 kw_only=True
和 eq=False
,并且我希望有一个新的装饰器可以做到这一点,这样我就可以每次都拼写出参数。所以,例如...
@mydataclass
class Foo:
a: int = 5
...应该相当于...
@dataclass(kw_only=True, eq=False)
class Foo:
a: int = 5
我知道这看起来并没有节省很多打字时间,但这更多的是为我们团队的其他成员提供一个方便的装饰器,这样就没有人忘记正确添加这两个参数。
装饰器基本上是采用函数或类作为参数的函数,因此,您只需创建一个以类作为参数并返回数据类的值的新函数:
from dataclasses import dataclass
def mydataclass(cls):
return dataclass(kw_only=True, eq=False)(cls)
@mydataclass
class Foo:
a: int = 5