如何在python中正确地装饰类

2024-10-03 02:39:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我做这个有点困难。目前我有一个模块,里面有一堆类,其中一些类将被修饰以表示一些东西。在

我想要的是创建一个新的,假的模块,它只包含装饰类。所以像这样:

class FakeModule: pass

def Decorator(cls):
    attr = getattr(RealModule, cls)
    setattr(FakeModule, cls, attr)

有什么建议吗?我对python和python decorators还很陌生,所以我不太确定正确的方法是什么。在


Tags: 模块decoratorsdef装饰decoratorpass建议class
1条回答
网友
1楼 · 发布于 2024-10-03 02:39:18

What I would like is to create a new, fake module which contains only the decorated classes

如果decorator在一个类上设置了一些唯一的属性或值,那么您可以从一个模块中获取所有类,并使用inspectmodule对它们进行筛选:

def is_decorated_class(cls, _sentinel=object()):
    return (inspect.isclass(cls) and 
            getattr(cls, "some_attr", _sentinel) == value)

name_class_pairs = inspect.getmembers(realmodule, is_decorated_class)

相关问题 更多 >