For example:
Import MyModule
MyObject = Mymodule.myclass ()
Or
From MyModule import MyClass
MyObject = MyClass ()
If you want to create a class instance dynamically in your program, you need to take two steps, for example:
m = __import__ (' MyModule ')
c = GetAttr (M, ' MyClass ')
MyObject = C ()
Note, however: if MyClass is not in the MyModule automatic Export list (__all__), you must explicitly import it, for example:
m = __import__ (' MyModule ', globals (), locals (), [' MyClass '])
c = GetAttr (M, ' MyClass ')
MyObject = C ()
To encapsulate some of the specifications, you can do this:
Code
Copy Code code as follows:
Class Activator:
' This class is used to dynamically create instances of the class '
@staticmethod
Def CreateInstance (Class_name, *args, **kwargs):
"Creates an instance of the class dynamically.
[Parameter]
Class_name-Full name of class (including module name)
*args-The parameters required by the Class Builder (list)
*kwargs-The parameters required by the Class Builder (DICT)
[Return]
Instance of a dynamically created class
[Example]
class_name = ' Knightmade.logging.Logger '
Logger = Activator.CreateInstance (class_name, ' logname ')
'''
(Module_name, class_name) = Class_name.rsplit ('. ', 1)
Module_meta = __import__ (Module_name, Globals (), locals (), [class_name])
Class_meta = GetAttr (Module_meta, class_name)
Object = Class_meta (*args, **kwargs)
Return object