4

重複の可能性:モジュールの
getattr

Manager クラスを定義するモジュールがあります。モジュールでこのクラスのインスタンスを作成し、モジュールをこのクラスの「グローバル インスタンス」として機能させたいと考えています。例えば:

class Manager:

    def func(self):
        print('stuff')

instance = Manager()

def func():
    instance.func()

module.x が module.instance.x を返すようにする方法はありますか? (モジュールレベルのプロパティのようなもの)

更新:この質問の回答は、私のユースケースの半分しかカバーしていません(つまり、重複ではなく、その質問が求めていることは異なります)。また、モジュールの属性も使用できるようにする必要があります。例:

class Manager:

    def __init__(self):
        self.x = 3

    def func(self):
        print('stuff')

sys.modules[__name__] = Manager()

>>> module.func
<func>
>>> module.x
3
>>> module.Manager
AttributeError
4

1 に答える 1

0

Manager__getattr__リターンモジュールレベルのオブジェクトを持っていないのはなぜですか?

def __getattr__(self, key):
    try:
        return globals()[key]
    except KeyError:
        raise AttributeError(key)
于 2012-09-30T04:17:46.970 に答える