0

これを行うのに問題があります。現在、私はたくさんのクラスを含むモジュールを持っています、これらのクラスのいくつかはいくつかのことを示すために装飾される予定です。

私が欲しいのは、装飾されたクラスのみを含む新しい偽のモジュールを作成することです。だからこのようなもの:

class FakeModule: pass

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

助言がありますか?私はPythonとPythonデコレータにかなり慣れていないので、これを行う適切な方法がよくわかりません。

4

1 に答える 1

0

私が望むのは、装飾されたクラスのみを含む新しい偽のモジュールを作成することです

デコレータがクラスに一意の属性または値を設定する場合、モジュールからすべてのクラスを取得し、モジュールを使用してそれらをフィルタリングできinspectます。

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)
于 2012-10-15T21:09:41.413 に答える