重新装饰一个python(类)装饰器

问题描述 投票:0回答:1

我想创建一个装饰器,它基本上包装了一个已经存在的具有参数的装饰器,这样新的装饰器就像旧的装饰器一样,并提供了一些参数。

具体来说,这是关于内置

@dataclass
装饰器。我有很多类可以用它来装饰,同时总是使用
kw_only=True
eq=False
,并且我希望有一个新的装饰器可以做到这一点,这样我就可以每次都拼写出参数。所以,例如...

@mydataclass
class Foo:
    a: int = 5

...应该相当于...

@dataclass(kw_only=True, eq=False)
class Foo:
    a: int = 5

我知道这看起来并没有节省很多打字时间,但这更多的是为我们团队的其他成员提供一个方便的装饰器,这样就没有人忘记正确添加这两个参数。

python python-decorators python-dataclasses
1个回答
0
投票

装饰器基本上是采用函数或类作为参数的函数,因此,您只需创建一个以类作为参数并返回数据类的值的新函数:

from dataclasses import dataclass

def mydataclass(cls):
    return dataclass(kw_only=True, eq=False)(cls)

@mydataclass
class Foo:
    a: int = 5
© www.soinside.com 2019 - 2024. All rights reserved.