0

(のコード)モジュール内の関数を動的に呼び出す方法は?

例えば:

class Class1(object):
    pass

class Class2(object):
    pass

# here I want to either instantiate object dynamically or dynamically pass 
# a Class1 or Class2 object to some other method/class inside this module code
4

2 に答える 2

4

このような意味ですか?

>>> class Class1(object):
...     pass
... 
>>> class Class2(object):
...     pass
... 
>>> def foo(cls):
...     print cls
... 
>>> import random
>>> classes = {'Class1': Class1, 'Class2': Class2}
>>> dynamic_class = classes['Class%d' % random.randint(1, 2)]
>>> foo(dynamic_class())
<__main__.Class1 object at 0x10b44ab50>
于 2012-07-13T21:24:20.887 に答える
2

名前でクラスにアクセスしたいという意味だと思います。

必要なクラスが同じモジュールにある場合は、クラスglobals()[classname]()をインスタンス化してみてください。別のモジュールにある場合は、vars(module)[classname]()またはを試してくださいgetattr(module, classname)()

classnameはクラスの名前を含むmodule文字列です。これは文字列ではなく、モジュールへの参照です。)

于 2012-07-13T21:22:08.223 に答える